这是我的代码。我想使用tkinter窗口右侧的两个按钮上下滚动列表框中的项目。我尝试了一些方法,他们确实向上和向下选择了项目,但列表框没有向下滚动(打开下面的图片以更好地理解(
from tkinter import *
root = Tk()
root.geometry('450x400')
root.config(bg='#083D77')
# making a frame on left of the window
fr = Frame(root)
fr.grid(row=0, column=0, columnspan=3, rowspan=4)
# LIST BOX INSIDE FRAME
lb = Listbox(fr, font=("Rockwell", 15, 'bold'), height=10, bg='#F4D35E', width=34, fg='#083D77')
lb.pack(side=LEFT, fill='both', expand='true')
for i in range(50): # item inside listbox
lb.insert(i, 'This is sample data {}'.format(i+1))
# SCROLL BAR INSIDE FRAME
sbr = Scrollbar(fr, orient='vertical')
sbr.pack(side=RIGHT, fill='y')
# linking scrollbar and listbox toghter
sbr.config(command=lb.yview)
lb.config(yscrollcommand=sbr.set)
# UP ARROW DOWN ARROW BUTTON
up_arrow = Button(root, text="▲", fg='#F95738',) # up arrow
up_arrow.grid(column=4, row=1, padx=5, sticky='s')
down_arrow = Button(root, text="▼", fg='#F95738')
down_arrow.grid(column=4, row=2, padx=5, sticky='n')
# select button
b1 = Button(root, font=("Rockwell", 15, 'bold'), text='SELECT', fg='red', border=2, relief='solid')
b1.grid(row=5, column=1, pady=5)
root.mainloop()
单击此处查看tkinter-gui窗口的图像
我从堆叠流的另一个问题中得到了答案
链接";https://stackoverflow.com/questions/3559673/how-to-scroll-an-inactive-tkinter-listbox">
现在我的代码看起来是这样的,使这个工作
from tkinter import *
root = Tk()
root.geometry('450x400')
root.config(bg='#083D77')
def OnEntryDown():
lb.yview_scroll(1, "units")
def OnEntryUp():
lb.yview_scroll(-1, "units")
# making a frame on left of the window
fr = Frame(root)
fr.grid(row=0, column=0, columnspan=3, rowspan=4)
# LIST BOX INSIDE FRAME
lb = Listbox(fr, font=("Rockwell", 15, 'bold'), height=10, bg='#F4D35E', width=34, fg='#083D77')
lb.pack(side=LEFT, fill='both', expand='true')
for i in range(50): # item inside listbox
lb.insert(i, 'This is sample data {}'.format(i+1))
# SCROLL BAR INSIDE FRAME
sbr = Scrollbar(fr, orient='vertical')
sbr.pack(side=RIGHT, fill='y')
# method for linking scrollbar and listbox
sbr.config(command=lb.yview)
lb.config(yscrollcommand=sbr.set)
# UP ARROW DOWN ARROW BUTTON
up_arrow = Button(root, text="▲", fg='#F95738',command=OnEntryUp) # up arrow
up_arrow.grid(column=4, row=1, padx=5, sticky='s')
down_arrow = Button(root, text="▼", fg='#F95738',command=OnEntryDown)
down_arrow.grid(column=4, row=2, padx=5, sticky='n')
b1 = Button(root, font=("Rockwell", 15, 'bold'), text='SELECT', fg='red', border=2, relief='solid')
b1.grid(row=5, column=1, pady=5)
root.mainloop()
关注这两个新函数def OnEntryDown((:&def OnEntryUp((:
lambda函数也可以使用
up_arrow = Button(root, text="▲", fg='#F95738',command=lambda: lb.yview_scroll(-1, "units")) # up arrow
up_arrow.grid(column=4, row=1, padx=5, sticky='s')
down_arrow = Button(root, text="▼", fg='#F95738',command=lambda: lb.yview_scroll(1, "units"))
down_arrow.grid(column=4, row=2, padx=5, sticky='n')