python - Tkinter 滚动问题
问题描述
我想在我的列表框上放一个滚动条,但是因为我插入的项目太长了,但是滚动条并没有一直滚动。如果你运行下面的代码,你会看到我在说什么,并注意到水平滚动条不能一直滚动到右边。有谁知道我该如何解决这个问题?当您添加更多条目时,垂直滚动条也会出现同样的问题。
import tkinter
lista=[11111111111111111111111111111111111111111111111,22222222222222222222222222222222222222222222222222,
33333333333333333333333333333333333333333333333333333333333333333333333333333333334444444444444444444467,4444444444444444,
5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556]
master = tkinter.Tk()
master.geometry("400x250")
frame = tkinter.Frame(master, borderwidth=1, highlightthickness=1,
highlightbackground="black", highlightcolor="black")
frame.place(bordermode=tkinter.INSIDE, height=240, width=300, y=0, x=30)
LIST = tkinter.Listbox(frame)
LIST.place(bordermode=tkinter.INSIDE, height=237, width=296)
Scroll_Bar_x = tkinter.Scrollbar(frame, orient=tkinter.HORIZONTAL)
Scroll_Bar_x.config(command=LIST.xview)
Scroll_Bar_x.pack(fill=tkinter.X, side=tkinter.BOTTOM)
LIST.config(xscrollcommand=Scroll_Bar_x.set)
Scroll_Bar_y = tkinter.Scrollbar(frame, orient=tkinter.VERTICAL)
Scroll_Bar_y.config(command=LIST.yview)
Scroll_Bar_y.pack(fill=tkinter.Y, side=tkinter.RIGHT)
LIST.config(yscrollcommand=Scroll_Bar_y.set)
for x in lista:
LIST.insert(0, x)
master.mainloop()
解决方案
您在放置的列表框上重叠滚动条时遇到问题。大多数时候place()
不是你想要使用的。
相反,尝试grid()
这将有助于保持一切井井有条并正确调整大小。
import tkinter
lista=[11111111111111111111111111111111111111111111111,22222222222222222222222222222222222222222222222222,
33333333333333333333333333333333333333333333333333333333333333333333333333333333334444444444444444444467,4444444444444444,
5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556]
master = tkinter.Tk()
master.geometry("400x250")
frame = tkinter.Frame(master, height=240, width=300, borderwidth=1, highlightthickness=1, highlightbackground="black", highlightcolor="black")
frame.grid(row=0, column=0)
frame.rowconfigure(0, weight=1)
frame.columnconfigure(0, weight=1)
LIST = tkinter.Listbox(frame)
LIST.grid(row=0, column=0, sticky="nsew")
frame.grid_propagate(False)
Scroll_Bar_x = tkinter.Scrollbar(frame, orient=tkinter.HORIZONTAL)
Scroll_Bar_x.config(command=LIST.xview)
Scroll_Bar_x.grid(row=1, column=0, sticky="ew")
LIST.config(xscrollcommand=Scroll_Bar_x.set)
Scroll_Bar_y = tkinter.Scrollbar(frame, orient=tkinter.VERTICAL)
Scroll_Bar_y.config(command=LIST.yview)
Scroll_Bar_y.grid(row=0, column=1, sticky="ns")
LIST.config(yscrollcommand=Scroll_Bar_y.set)
for x in lista:
LIST.insert(0, x)
master.mainloop()
结果:
推荐阅读
- etl - Informatica 关系连接密码更改
- javascript - 如何将您当前的语言环境包含在 url 中?(Nuxt.js/Vuetify)
- python - REINFORCE 深度强化学习算法中的折扣奖励
- performance - 提高影响集合中所有项目的 INotifyPropertyChanged 的性能
- coldfusion - Queryappend 的任何自定义函数
- floating-point - 如何在没有下溢的情况下计算对数空间中的总和?
- ssh - 如何通过 ssh 将 tkcon 连接到 tcl/tk GUI
- asp.net-mvc - asp.net mvc - 加载侧边导航一次
- html - 导航组件 Vue 中的引导导航栏显示不正确
- javascript - Svelte 将来自异步脚本的值存储在变量中