如何在 Tkinter 的网格几何中使用带有列表框的滚动条?
How do I use a scrollbar with a listbox in a grid geometry with Tkinter?
在下面的代码中,我只是在一个表单中尝试各种不同的小部件。如何让滚动条与列表框一起显示?我见过的所有示例都显示了仅包含列表框和滚动条的包几何结构。
import tkinter as tk
def Addn(): #command function for button
a = int(Entrya.get())
b = int(Entryb.get())
c = a+b
Entrys.configure(state='normal')
sumv.set("")
Entrys.insert(2,c)
Entrys.configure(state='readonly')
form = tk.Tk()
form.title("Comprehensive Standard Form")
form.geometry('750x500')
sumv=tk.StringVar()
btnAddn = tk.Button(form, text="Add",command=Addn)
Labela = tk.Label(form, text="A:")
Labelb = tk.Label(form, text="B:")
Labels = tk.Label(form, text="Sum:")
Entrya = tk.Entry(form)
Entryb = tk.Entry(form)
Entrys = tk.Entry(form,width=30,textvariable=sumv)
Entrys.configure(state='readonly')
#scrollbar
scrollbar=tk.Scrollbar(form)
mylist = tk.Listbox(form, yscrollcommand = scrollbar.set )
for line in range(100):
mylist.insert("end", "This is line number " + str(line))
mylist.grid(row=7,column=1,rowspan=3)
scrollbar.config( command = mylist.yview )
#Placement in form
Labela.grid(row=0, column=0, padx=25, pady=25)
Entrya.grid(row=0, column=1, padx=25, pady=25)
Labelb.grid(row=1, column=0, padx=25, pady=25)
Entryb.grid(row=1, column=1, padx=25, pady=25)
Labels.grid(row=2, column=0, padx=25, pady=25)
Entrys.grid(row=2, column=1, padx=25, pady=25)
form.mainloop()
您只需使用 .grid
将滚动条添加到表单,就像您在列表框上使用 .grid
一样。
在 .grid
中使用 sticky
参数可以帮助您将列表框与滚动条对齐。
mylist.grid(row=7,column=1,rowspan=3, sticky='e')
scrollbar.grid(row=7, column=2, rowspan=3, sticky='nsw')
sticky
采用 North、South、East 和 West 参数,缩写为包含其首字母的字符串。 sticky
告诉小部件 'stick' 到它所在的单元格的指定边缘。如果它在单元格的相对侧设置了粘性,它将拉伸(北和南,或东和西), 否则它将定位到选定的一侧。滚动条已将粘性设置为 North 和 South 以确保它占据其单元格的整个高度。它还将 sticky 设置为 West,以便它位于单元格的左侧。 mylist 的 sticky 设置为 East,因此它位于右侧。 mylist 在右边,scrollbar 在左边,这两个小部件是相邻的,看起来是一个内聚的小部件。
在下面的代码中,我只是在一个表单中尝试各种不同的小部件。如何让滚动条与列表框一起显示?我见过的所有示例都显示了仅包含列表框和滚动条的包几何结构。
import tkinter as tk
def Addn(): #command function for button
a = int(Entrya.get())
b = int(Entryb.get())
c = a+b
Entrys.configure(state='normal')
sumv.set("")
Entrys.insert(2,c)
Entrys.configure(state='readonly')
form = tk.Tk()
form.title("Comprehensive Standard Form")
form.geometry('750x500')
sumv=tk.StringVar()
btnAddn = tk.Button(form, text="Add",command=Addn)
Labela = tk.Label(form, text="A:")
Labelb = tk.Label(form, text="B:")
Labels = tk.Label(form, text="Sum:")
Entrya = tk.Entry(form)
Entryb = tk.Entry(form)
Entrys = tk.Entry(form,width=30,textvariable=sumv)
Entrys.configure(state='readonly')
#scrollbar
scrollbar=tk.Scrollbar(form)
mylist = tk.Listbox(form, yscrollcommand = scrollbar.set )
for line in range(100):
mylist.insert("end", "This is line number " + str(line))
mylist.grid(row=7,column=1,rowspan=3)
scrollbar.config( command = mylist.yview )
#Placement in form
Labela.grid(row=0, column=0, padx=25, pady=25)
Entrya.grid(row=0, column=1, padx=25, pady=25)
Labelb.grid(row=1, column=0, padx=25, pady=25)
Entryb.grid(row=1, column=1, padx=25, pady=25)
Labels.grid(row=2, column=0, padx=25, pady=25)
Entrys.grid(row=2, column=1, padx=25, pady=25)
form.mainloop()
您只需使用 .grid
将滚动条添加到表单,就像您在列表框上使用 .grid
一样。
在 .grid
中使用 sticky
参数可以帮助您将列表框与滚动条对齐。
mylist.grid(row=7,column=1,rowspan=3, sticky='e')
scrollbar.grid(row=7, column=2, rowspan=3, sticky='nsw')
sticky
采用 North、South、East 和 West 参数,缩写为包含其首字母的字符串。 sticky
告诉小部件 'stick' 到它所在的单元格的指定边缘。如果它在单元格的相对侧设置了粘性,它将拉伸(北和南,或东和西), 否则它将定位到选定的一侧。滚动条已将粘性设置为 North 和 South 以确保它占据其单元格的整个高度。它还将 sticky 设置为 West,以便它位于单元格的左侧。 mylist 的 sticky 设置为 East,因此它位于右侧。 mylist 在右边,scrollbar 在左边,这两个小部件是相邻的,看起来是一个内聚的小部件。