我需要向我的程序的一部分添加一个滚动条,因为他们希望它显示所有人,而不是另一部分只显示一个组。在查看 SC 时,大多数滚动条问题使用 Tkinter 而不是 tkinter 并使用包而不是网格。我遇到的问题是我的代码只在第一行的末尾创建了一个小滚动条。我尝试了不同的变体,sticky = E
但它没有创建全屏滚动条。有人可以在课堂设置中使用 tkinter 和 grid 为我指出正确的方向吗?
class ButtonClickSignin(Frame):
def __init__(self):
self.win2 = Tk()
self.win2.title('Sign-In')
self.win2['bg'] = 'blue'
self.win2.geometry('635x635+200+100')
center(self.win2)
self.canvas = Canvas(self.win2)
Frame.__init__(self, self.win2)
self.frame = Frame(self.canvas)
self.scrollbar = Scrollbar(self.win2, orient = VERTICAL)
self.scrollbar.config(command = self.canvas.yview)
self.scrollbar.grid(column = 5)
self.canvas.config(yscrollcommand = self.scrollbar.set)
self.canvas.create_window((0, 0), window = self.frame)
self.win2.bind('<Configure>', self.onFrameConfigure)
self.checkbuttons()
def checkbuttons(self):
filenames = ['grade_pk.txt', 'grade_kinder.txt', 'grade_one.txt',
'grade_two.txt', 'grade_three.txt', 'grade_four.txt',
'grade_five.txt', 'grade_six.txt', 'grade_seven.txt',
'grade_eight.txt', 'grade_drop_in.txt']
with open('sign_in.txt', 'w') as outfile:
for names in filenames:
with open(names) as infile:
outfile.write(infile.read())
rw = 0
cl = 0
file = open('sign_in.txt', 'r')
for name in file:
cb1 = Checkbutton(self.win2, text = name, onvalue = 1, offvalue = 0,
height = 2, width = 22, background = 'blue')
cb1.grid(row = rw, column = cl, padx = 8, pady = 8)
cl += 1
if cl == 3:
cl = 0
rw += 1
我无法运行您的代码,因为它缺少代码,而且我没有它所依赖的所有输入文件。但是,我看到了几个问题:
grid
画布,所以它是不可见的,sticky
选项,因此即使给滚动条的空间合适,滚动条也永远不会填满它。我的建议是完全重新开始。仅使用画布创建窗口,并确保它可见。如果您最初为画布赋予独特的颜色,这将更容易形象化。
接下来,添加滚动条并确保其可见。滚动条需要与画布在同一行或多行上,并且它的sticky
值需要为“ns”(北、南)。执行此操作 - 并且仅此 - 并确保在继续之前所有内容均正确显示并调整大小。
完成后,在画布中添加一个大的固定尺寸的框架。它需要比画布高得多,以便您可以确保滚动条正常工作。给它一个独特的颜色,并确保滚动条会滚动它。
只有在您完成所有这些之后,您才开始向内部框架添加小部件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句