我发现这个关于滚动条的代码工作正常.
from tkinter import *
master = Tk()
scrollbar = Scrollbar(master)
scrollbar.pack(side=RIGHT, fill=Y)
listbox = Listbox(master, yscrollcommand=scrollbar.set)
for i in range(10000):
listbox.insert(END, str(i))
listbox.pack(side=LEFT, fill=BOTH)
scrollbar.config(command=listbox.yview)
mainloop()
Run Code Online (Sandbox Code Playgroud)
我尝试在我的代码中使用它,如下所示:
import tkinter as tk
class interface(tk.Frame):
def __init__(self,den):
self.tklist()
#in my code, tklist is not called here. I called it here to minimize the code
#there are stuff in here also
def tklist(self):
scrollbar = tk.Scrollbar(den)
self.lst1 = tk.Listbox(den, selectmode="SINGLE", width="100", yscrollcommand=scrollbar.set)
for i in range(1000):
self.lst1.insert(END, str(i))
self.lst1.pack(side=LEFT, fill=BOTH)
scrollbar.config(command=lst1.yview)
den = tk.Tk()
den.title("Search")
inter = interface(den)
den.mainloop()
Run Code Online (Sandbox Code Playgroud)
但是当我运行上面的代码时,我在插入行上出错了.
NameError: global name 'END' is not defined
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我试图找到文档和effbot的链接是我得到的最接近但仍然无法理解有什么问题.
iCo*_*dez 11
END,LEFT和BOTH所有驻留在tkinter命名空间中.因此,他们需要tk.在他们面前放置资格:
for i in range(1000):
self.lst1.insert(tk.END, str(i))
self.lst1.pack(side=tk.LEFT, fill=tk.BOTH)
scrollbar.config(command=lst1.yview)
Run Code Online (Sandbox Code Playgroud)
或者,您可以根据需要明确导入它们:
from tkinter import BOTH, END, LEFT
Run Code Online (Sandbox Code Playgroud)