我正在尝试使用Python3中的tkinter创建一个可滚动的条目列表。它确实很棒,对标签也很好,但对条目似乎不起作用。你可以在这里找到我的代码,它创建了一个2x25的条目列表,我想通过它可以滚动:
import tkinter as tk
class MainPage(tk.Frame):
def __init__(self, racine):
super().__init__(master=racine)
self.grid()
self.entriesCanvas = tk.Canvas(self, borderwidth=0, background="white")
self.entriesFrame = tk.Frame(self.entriesCanvas, background="white")
self.scrollbar = tk.Scrollbar(self, command=self.entriesCanvas.yview)
self.entriesCanvas.configure(yscrollcommand=self.scrollbar.set)
self.entriesCanvas.grid(column=0, row=2, columnspan=2)
self.scrollbar.grid(column=3, row=2, sticky='ns')
# self.entriesFrame.grid()
self.entriesCanvas.create_window((0, 0), window=self.entriesFrame,
anchor='nw', tags='self.entriesFrame')
# self.entriesFrame.grid()
self.entriesCanvas.bind('<Configure>', self.onFrameConfigure)
self.entries = []
for i in range(50):
self.entries.append(tk.Entry(self.entriesFrame, font=('arial', 30)))
self.entries[i].grid(column=i % 2, row=i//2)
def onFrameConfigure(self, event):
self.entriesCanvas.configure(scrollregion=self.entriesCanvas.bbox("all"))
if __name__ == "__main__":
root = tk.Tk()
mainPage = MainPage(root)
root.mainloop()
注意我注释了两行。如果你“激活”第一行,会有一个滚动条,你可以滚动条目,但它奇怪的缩放。另一方面,如果你“激活”第二行,GUI将如我所愿,但不可能滚动,它似乎显示所有条目(即使有1000个条目,因此使一个窗口的大小是你的屏幕的20倍)
你知道我的错在哪里吗
好吧,所以我找到了让我的程序做我想做的事情的方法。我只是改变了方法
由
(我基本上只添加了一个参数,要求画布是帧的宽度。) 我不知道它是否完美(因为我仍然使用.grid()代替.pack()),但它是有效的
谢谢你给了我来源Tkinter: How to get frame in canvas window to expand to the size of the canvas?,它真的帮助我找到了我的错误所在
我真的为我的英语道歉,我知道我犯了很多错误
相关问题 更多 >
编程相关推荐