编辑:对不起,我应该've searched more before I asked, because I'已经找到了我的问题的解决方案 . 链接:Adding a scrollbar to a group of widgets in Tkinter
我正在尝试将画布添加到Tkinter GUI,其中带有文件文本的条目小部件被添加到网格中 . 文件中的文本量往往很大,所以我需要添加一个滚动条 .
条目小部件按照它们应该的方式添加到画布中,我已经独立测试了滚动条,它工作正常 - 除非添加了条目小部件 . 当我这样做时,滚动条消失 .
这是画布和滚动条的代码:
groupfr = Frame(self.labelll, width = 200, height = 1000)
groupfr.pack_propagate(0)
groupfr.pack(fill='both', side='left')
canvasgroup = Pmw.Group(groupfr, tag_text= 'canvasgroup')
canvasgroup.pack(fill = 'both', expand = 1, padx = 1, pady = 1)
self.canvas = Tkinter.Canvas(canvasgroup.interior(), width = 200,
height = 1000, bg = 'white')
self.canvas.config(scrollregion=(0,0,20,1000))
self.sbar = Tkinter.Scrollbar(self.canvas)
self.sbar.config(command=self.canvas.yview)
self.canvas.config(yscrollcommand=self.sbar.set)
self.sbar.pack(side='right', fill='y')
self.canvas.pack_propagate(0)
self.canvas.pack(side = 'left', fill = 'y', expand = 'no')
我为可怕的代码道歉 . 然而,这是真正的问题开始的地方:
for items in linematch:
items = items.split('=')
list_of_lists.append(items)
columncount = 0
rowcount = 0
for items in list_of_lists:
rowcount = rowcount + 1
columncount = 0
for idx, (words) in enumerate(zip(items)):
self.canvas.pack_propagate(0)
colcnt = colcnt + 1
idx = Tkinter.Entry(self.canvas)
idx.grid(row=rowcount, column=columncount)
idx.insert(0, words)
代码获取文件输入并使每行成为两个项的列表,这两个项本身附加到另一个列表 . 这个列表列表用于这样的条目小部件,每个单词(和翻译)都在他们自己的条目小部件中:
word translation
word translation
等等(不知道这个信息有多重要 . )
当添加条目小部件时,有没有人知道滚动条消失的原因?
谢谢
1 回答
必须使用canvas
create_window
方法将小部件添加到画布 . 如果您使用pack
或grid
,他们将受到滚动条的影响't be part of the canvas and thus won' .