我正在编写一个带有 GUI 的单线程程序,它执行一系列任务。在这些任务期间,GUI 会定期刷新以检查一些可用的输入(例如中止)。为了避免因不需要的输入而停止任务,所有不必要的 GUI 元素都会.config(state='disabled')
在执行期间禁用。然而,这对于由于某种原因是独一无二的并且没有"-state"
选项的滚动条似乎不起作用。
我认为您不能使用该-state
选项禁用滚动条小部件,我在Tcl/Tk网站上进行了搜索,但没有找到任何相关信息。
但是我确信如果您使用的是包几何图形或grid_forget()如果您使用的是网格几何图形,您可以使用pack_forget()方法将其从窗口中删除,因此您可以稍后再次显示滚动条小部件再次调用。pack/grid
下面是一个例子:
from tkinter import *
master = Tk()
scrollbar = Scrollbar(master)
scrollbar.pack(side=RIGHT, fill=Y)
def disable_scroll():
scrollbar.pack_forget()
def active_scroll():
scrollbar.pack(side=LEFT, fill=BOTH)
scrollbar.config(command=None)
btn1 = Button(master, text="OK 1", command=disable_scroll)
btn1.pack()
btn2 = Button(master, text="OK 2", command=active_scroll)
btn2.pack()
listbox = Listbox(master, yscrollcommand=scrollbar.set)
for i in range(1000):
listbox.insert(END, str(i))
listbox.pack(side=LEFT, fill=BOTH)
scrollbar.config(command=listbox.yview)
mainloop()
滚动条根据列表框的值而变化,正如我所说的代码:
from tkinter import *
import random
master = Tk()
scrollbar = Scrollbar(master)
scrollbar.pack(side=RIGHT, fill=Y)
def disable_scroll():
scrollbar.pack_forget()
def active_scroll():
scrollbar.pack(side=LEFT, fill=BOTH)
scrollbar.config(command=None)
btn1 = Button(master, text="disable_scroll", command=disable_scroll)
btn1.pack()
btn2 = Button(master, text="active_scroll", command=active_scroll)
btn2.pack()
listbox = Listbox(master, yscrollcommand=scrollbar.set)
#NEW FUNCTIONS
def count():
listbox.delete(0, END)
lista = [5, 8, 500, 1000]
for i in range(random.choice(lista)):
listbox.insert(END, str(i))
def delete():
listbox.delete(0, END)
#NEW BUTTONS
btn3 = Button(master, text="start", command=count)
btn3.pack()
btn4 = Button(master, text="delete", command=delete)
btn4.pack()
listbox.pack(side=LEFT, fill=BOTH)
scrollbar.config(command=listbox.yview)
mainloop()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句