如何让这些tkinter滚动条工作?

时间:2017-08-20 03:07:16

标签: python-3.x tkinter listbox scrollbar

即使此代码来自此网站上的一位非常高级的用户,我也无法让这些滚动条工作。没有错误,他们只是没有出现

import tkinter as tk


#Make Window
root = tk.Tk()
root.geometry("612x417")
root.title("Exchange Rates")
root.resizable(0,0)
root.configure(background='lightgrey')
#End

#Create listboxes for currency selection
listbox1 = tk.Listbox(root, font="Helvetica 11 bold", height=3, width=10)
listbox2 = tk.Listbox(root, font="Helvetica 11 bold", height=3, width=10)

#Try to create a scroll bar
scrollbar1 = tk.Scrollbar(root, orient="vertical", command=listbox1.yview)
listbox1.configure(yscrollcommand=scrollbar1.set)

scrollbar2 = tk.Scrollbar(root, orient="vertical", command=listbox2.yview)
listbox2.configure(yscrollcommand=scrollbar2.set)

listbox1.place(x=300,y=50)
listbox2.place(x=300,y=125)



scrollbar3 = Scrollbar(root)
scrollbar3.pack(side="right", fill="y")

listbox = Listbox(root, yscrollcommand=scrollbar3.set)
listbox.pack()

scrollbar3.config(command=listbox.yview)

root.mainloop()

3 个答案:

答案 0 :(得分:1)

我不知道你是如何在没有错误的情况下设法运行它的,因为你将tkinter导入tk但是对于listbox你输入了Listbox(而不是tk.Listbox),或者对于scrollbar3你输入了Scrollbar(而不是tk.Scrollbar)。它们也没有显示,因为你没有打包/放置它们!

并且......你必须使用地方,包装或网格,你不能一起使用它们。您使用null == savedInstanceState; // returns true 作为listbox1和2,但之后您使用.place()作为scrollbar3和listbox。无论你先使用什么(这里都是它的地方)都可以使用,但其他人根本就不会出现。

答案 1 :(得分:0)

以下脚本应该有助于向您展示GroovyShell.evaluate(sb.toString())如何以清晰简洁的方式工作以及它们如何受到输入Scrollbar

的项目数量的影响
listbox

另请注意,为了让我们检查问题并帮助您完成问题,我们需要能够以简单易懂的方式运行和审核代码。

答案 2 :(得分:0)

大家好,回答我自己的问题,这是ListboxFrame Scrollbar的{​​{1}}。

import tkinter as tk

#Make Window
root = tk.Tk()
root.geometry("612x417")
root.title("Exchange Rates")
root.resizable(0,0)
root.configure(background='lightgrey')
#End

#Try to create a listbox with a scroll bar within a frame

#Create elements
frame = tk.Frame(root, bd=1, relief='sunken', width=150, height=300)
scrollbar = tk.Scrollbar(frame)
listbox = tk.Listbox(frame)

#Attach listbox to scrollbar
listbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)

#Poulate listbox
for i in range(100):
    listbox.insert('end', i)

#Pack elements
frame.pack(side='top')
scrollbar.pack(side='right', fill='y')
listbox.pack()

root.mainloop()