にあるフレームにいくつかのウィジェットを追加していますtix.NoteBook
。ウィンドウに収まらないウィジェットが多すぎる場合は、スクロールバーを使用したいので、tix.ScrolledWindow
そのフレーム内に配置して、代わりにこのScrolledWindowにウィジェットを追加します。
問題は、grid()ジオメトリマネージャーを使用すると、スクロールバーが表示されても機能しないことです(ドラッグバーがスクロールバー全体を占めます)。
from Tkinter import *
import Tix
class Window:
def __init__(self, root):
self.labelList = []
self.notebook = Tix.NoteBook(root, ipadx=3, ipady=3)
self.notebook.add('sheet_1', label="Sheet 1", underline=0)
self.notebook.add('sheet_2', label="Sheet 2", underline=0)
self.notebook.add('sheet_3', label="Sheet 3", underline=0)
self.notebook.pack()
#self.notebook.grid(row=0, column=0)
tab1=self.notebook.sheet_1
tab2=self.notebook.sheet_2
tab3=self.notebook.sheet_3
self.myMainContainer = Frame(tab1)
self.myMainContainer.pack()
#self.myMainContainer.grid(row=0, column=0)
scrwin = Tix.ScrolledWindow(self.myMainContainer, scrollbar='y')
scrwin.pack()
#scrwin.grid(row=0, column=0)
self.win = scrwin.window
for i in range (100):
self.labelList.append((Label(self.win)))
self.labelList[-1].config(text= "Bla", relief = SUNKEN)
self.labelList[-1].grid(row=i, column=0, sticky=W+E)
root = Tix.Tk()
myWindow = Window(root)
root.mainloop()
ジオメトリマネージャの少なくとも1つをからに変更pack()
するgrid()
と、問題が発生します。(実際には、grid()
すべてのコンテナーに使用することをお勧めします。)
NoteBookウィジェットを使用しない場合も、問題は発生しません。ここにある他の例はすべて、pack().
何かアイデアに依存しているようです。
佐野
さん、ありがとうございました