将ScrollBar添加到标签窗口

时间:2019-01-11 13:35:02

标签: python tkinter label scrollbar

我的代码本身运行良好,但是无法滚动浏览标签(这是我试图实现的目标)。 我不想使用画布或列表框之类的东西。

import tkinter as tk
master = tk.Tk()

scrollbar = tk.Scrollbar(master).pack(side=tk.RIGHT, fill=tk.Y,command=tk.yview)

label = tk.Label(text="llklkl")
label.place(x=100,y=500)

label2 = tk.Label(text="llklkl")
label2.place(x=1000,y=5000)

tk.mainloop()

1 个答案:

答案 0 :(得分:1)

您好,欢迎来到SO。 遗憾的是,tkinter Scrollbar小部件无法在_tkinter.tkapp对象上使用,即您的主窗口名为master。来自effbot.org

  

此小部件用于实现滚动的列表框,画布和文本字段。

  

滚动条窗口小部件几乎总是与列表框,画布或文本窗口小部件一起使用。水平滚动条也可以与Entry小部件一起使用。

这意味着您绝对必须在主窗口内创建一些小部件以便能够滚动任何内容,而不仅仅是滚动窗口本身。 话虽这么说,如果您想向列表框添加滚动条,那就是您要这样做的方式(同样来自上述网站,您应该真的将其签出):

首先,您必须将小部件的yscrollcommand回调设置为滚动条的set方法。 其次,您必须将滚动条的命令设置为小部件的yview方法,就像您已经做过的一样,但是要像name_of_object.yview而不是tk.yview

import tkinter as tk

master = tk.Tk()

scrollbar = tk.Scrollbar(master)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

listbox = tk.Listbox(master, yscrollcommand=scrollbar.set)
for i in range(20):
    listbox.insert(tk.END, str(i))
listbox.pack(side=tk.LEFT, fill=tk.BOTH)

scrollbar.config(command=listbox.yview)

master.mainloop()

另外,将scrollbar包装在单独的行中。这将在可滚动的Listbox小部件中生成一个数字从1到50的窗口。如果我说对了,您是否希望能够在标签之间滚动?好吧,我想您必须为此使用某种包装小部件,我建议使用Canvas。但这确实取决于您,我相信您会自己弄清楚的。如果您需要更多帮助,请告诉我-但请先阅读文档,然后再问;-)