1

にあるフレームにいくつかのウィジェットを追加しています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(). 何かアイデアに依存しているようです。 佐野
さん、ありがとうございました

4

1 に答える 1

2

「tix.scrolledWindow」を使用せずに解決しました。代わりに、ここでFredLundhによって提案された自動スクロールバーに行きました。主な問題は、NoteBookウィジェットへの適応でした。まず、ウィンドウ全体を囲むように、スクロールバーをルートに配置しようとしました。ここで、タブを変更するたびにスクロールバーのフックを変更したかったのですが、ノートブックの「raisecmd」が機能しませんでした。次に、各タブでconfigureイベントを使用することを考えました。新しいタブが発生するたびに、そのサイズが変更され、configureが呼び出されます。
さて、満足せずに何度も試した後、アプローチを変更してスクロールバーを中に入れましたタブの。タブとすべてのサブコンテナは、「grid_columnconfigure(0、weight = 1)」と「grid_rowconfigure(0、weight = 1)」の設定を取得する必要があります。そうしないと、タブとともに大きくなりません。

于 2010-04-08T18:15:25.367 に答える