我正在开发一个 GUI,按下某个按钮会产生一个弹出窗口,该窗口应该显示一个长的、可滚动的文本列表。我在弹出窗口中使用文本小部件来显示此文本。 我添加了一个滚动条,它出现在弹出窗口中就好了。但是,当您尝试滚动时,移动滚动条上的滑块没有任何作用。滑块甚至不动。但是当我使用鼠标滚轮时,文本列表会响应并滚动。请参阅下面分配给我的按钮的命令“bib”的代码:
def bib():
root = tk.Tk()
root.title("References")
h=tk.Scrollbar(root)
h.pack(side=tk.RIGHT,fill=tk.Y)
v=tk.Scrollbar(root)
t=tk.Text(root,width=90, wrap=tk.NONE, yscrollcommand=v.set)
t.insert(tk.END,"number 1\n")
t.insert(tk.END,"number 2\n")
t.insert(tk.END,"number 1\n")
t.insert(tk.END,"number 2\n")
t.insert(tk.END,"number 1\n")
t.insert(tk.END,"number 2\n")
t.insert(tk.END,"number 1\n")
t.insert(tk.END,"number 2\n")
t.insert(tk.END,"number 1\n")
t.insert(tk.END,"number 2\n")
t.insert(tk.END,"number 1\n")
t.insert(tk.END,"number 2\n")
t.insert(tk.END,"number 1\n")
t.insert(tk.END,"number 2\n")
t.pack(side=tk.TOP, fill=tk.X)
t.configure(font=("Times New Roman", 10))
v.config(command=t.yview)
t.mainloop()
答案 0 :(得分:1)
滚动条及其关联的小部件需要双向通信。您已经创建了从文本小部件到滚动条的单向通信,但不是相反。
水平滚动条的命令需要调用可滚动小部件的xview
方法,垂直滚动条的命令需要调用yview
方法。
答案 1 :(得分:0)
您创建了两个 Scrollbar
- h
和 v
- 并显示第一个滚动条 h
,但将 Text
分配给第二个滚动条 v
你不显示。
您必须将正确的 Scrollbar
分配给 Text
import tkinter as tk
root = tk.Tk()
root.title("References")
# rename `h` to `v`
v = tk.Scrollbar(root)
v.pack(side=tk.RIGHT, fill=tk.Y)
# rename `v` to `h`
#h = tk.Scrollbar(root)
t = tk.Text(root,width=90, wrap=tk.NONE, yscrollcommand=v.set)
for _ in range(20):
t.insert(tk.END,"number 1\n")
t.insert(tk.END,"number 2\n")
t.pack(side=tk.TOP, fill=tk.X)
t.configure(font=("Times New Roman", 10))
v.config(command=t.yview)
t.mainloop()