簡體   English   中英

可滾動框架Python Tkinter

[英]Scrollable Frame Python Tkinter

我正在研究一個具有可滾動框架的項目。 它使我可以將小部件添加到框架中,但無法使框架滾動並顯示其余的小部件。 我已經將我的代碼與其他可滾動顯示的框架進行了在線比較,但我沒有注意到兩者之間的區別。 任何人都可以看到解決方案。

碼:

from Tkinter import *
import ttk
import os

class GUI(Frame):
    def __init__(self, parent):
        Frame.__init__(self,parent)
        self.pack(fill=BOTH, expand=YES)

    def gameView(self):
        self.mainFrame = Frame(self)
        self.mainFrame.pack(side=TOP)

        self.scroller = ttk.Scrollbar(self.mainFrame, orient=VERTICAL)
        self.scroller.pack(side=RIGHT, fill=Y)

        self.canvas = Canvas(self.mainFrame, bd=0)
        self.canvas.pack(fill=BOTH, side=LEFT)

        self.viewArea = Frame(self.canvas, bg="Pink")
        self.viewArea.pack(side=TOP, fill=BOTH)

        self.canvas.config(yscrollcommand=self.scroller.set)
        self.scroller.config(command=self.canvas.yview)
        self.canvas.create_window((0,0), window=self.viewArea, anchor=NW, width=783, height=650)

        self.viewArea.bind("<Configure>", self.scrollCom)

        self.itemHolder = Frame(self.viewArea, bg="Pink")
        self.itemHolder.pack(side=TOP)

        self.gameGather()

    def scrollCom(self, event):
        self.canvas.config(scrollregion=self.canvas.bbox("all"), width=783, height=650)

    def gameGather(self):
        for i in range(0, 50):
            label = Label(self.viewArea, text="Pie")
            label.pack(side=TOP)

root = Tk()
root.title("School Vortex 2.0")
root.geometry("800x650")
root.resizable(0,0)

gui = GUI(root)
gui.gameView()

root.mainloop()

將窗口放在畫布上時,您將明確為其指定高度和寬度。 因此,框架的實際寬度和高度將被完全忽略。 由於框架幾乎恰好是畫布的高度,因此沒有任何可滾動的內容。

如果從對create_window的調用中刪除了widthheight選項,則框架將是可滾動的。

暫無
暫無

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

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