簡體   English   中英

Tkinter中帶有子窗口的滾動條

[英]Scroll bar with child window in Tkinter

我主要從此處復制代碼,它確實產生了一個新的框架,該框架由畫布和側面的滾動條組成,但是滾動條不起作用/未啟用。 這是創建新窗口的方法。

def ReviewTest(self, parsedFile = None):
    if parsedFile is None:
        return
    else:

        reviewTopLevel = Tk.Toplevel(self)

        reviewTopLevel.geometry("%dx%d%+d%+d" % (600,400,0,0))

        verticalScroll = Tk.Scrollbar(reviewTopLevel, orient=Tk.VERTICAL)
        verticalScroll.pack(fill=Tk.Y, side=Tk.RIGHT, expand=Tk.FALSE)

        canvas = Tk.Canvas(reviewTopLevel, bd=0, highlightthickness=0, yscrollcommand=verticalScroll.set)
        canvas.pack(side=Tk.LEFT, fill=Tk.BOTH, expand=Tk.TRUE)
        verticalScroll.config(command=canvas.yview)

        canvas.xview_moveto(0)
        canvas.yview_moveto(0)

        self.interior = interior = Tk.Frame(canvas)
        interiorId = canvas.create_window(0,0, window=interior, anchor=Tk.NW)

        reviewTopLevel.wm_title("Review Test")


        def _configure_interior(event):
            size = (reviewTopLevel.winfo_reqwidth(), reviewTopLevel.winfo_reqheight())
            canvas.configure(scrollregion="0 0 %s %s" % size)
            if reviewTopLevel.winfo_reqwidth() != canvas.winfo_width():
                canvas.configure(width=reviewTopLevel.winfo_width())

        interior.bind('<Configure>', _configure_interior)

        def _configure_canvas(event):
            if reviewTopLevel.winfo_reqwidth() != canvas.winfo_reqwidth():
                canvas.configure(width=reviewTopLevel.winfo_reqwidth())

        canvas.bind('<Configure>', _configure_canvas)

        self.canvasWidgets = []

        for keyIndex, key in enumerate(parsedFile.GetKeys()):
            category = Tk.Label(canvas, text=key, anchor=Tk.W)
            category.grid(row = 0, column = keyIndex, sticky=Tk.EW)
            self.canvasWidgets.append(category)

            currentColumnKey = parsedFile.GetColumns()[key]

            for dataIndex in range(0, len(currentColumnKey)):
                data = Tk.Entry(canvas)
                data.insert(0, currentColumnKey[dataIndex])
                data.grid(row = dataIndex + 1, column = keyIndex, sticky=Tk.EW)
                self.canvasWidgets.append(data)

我沒有仔細閱讀另一篇文章,添加的小部件應設置為內部,而不是畫布。

    self.canvasWidgets = []

        for keyIndex, key in enumerate(parsedFile.GetKeys()):
            category = Tk.Label(interior, text=key, anchor=Tk.W)
            category.grid(row = 0, column = keyIndex, sticky=Tk.EW)
            self.canvasWidgets.append(category)

            currentColumnKey = parsedFile.GetColumns()[key]

            for dataIndex in range(0, len(currentColumnKey)):
                data = Tk.Entry(interior)
                data.insert(0, currentColumnKey[dataIndex])
                data.grid(row = dataIndex + 1, column = keyIndex, sticky=Tk.EW)
                self.canvasWidgets.append(data)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM