我需要在程序的某个部分添加一个滚动条,因为他们希望它显示所有人,而不是只显示另一部分显示的一个组。在浏览SC时,大多数滚动条问题都使用Tkinter而不是tkinter并使用pack而不是grid。我遇到的问题是我的代码只在第一行的末尾创建一个小滚动条。我尝试了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
答案 0 :(得分:1)
我无法运行您的代码,因为它丢失了代码,而且我没有所依赖的所有输入文件。但是,我看到了几个问题:
grid
,因此它是不可见的,sticky
选项,所以即使给出的空间也是如此
滚动条是合适的,滚动条永远不会填充它。我的建议是彻底重新开始。只用画布创建窗口,并确保它可见。如果您最初为画布赋予独特的颜色,这将更容易可视化。
接下来,添加滚动条并确保其可见。滚动条需要与画布位于同一行或多行,并且它需要具有sticky
值&#34; ns&#34; (北,南)。这样做 - 只有这一点 - 并确保在继续之前显示所有内容并正确调整大小。
完成后,在画布中添加一个大的固定大小的帧。它需要比画布高得多,以便您可以确保滚动条工作。给它一个独特的颜色,并确保滚动条将滚动它。
只有在您完成所有操作后,才开始向内框添加小部件。