在python tkinter上,我在Toplevel窗口上使用了2个不同的帧,一个在右边,另一个在左边。 右侧的框架不可滚动。我在该框架的框架顶部创建了一个画布,并在该画布的顶部创建了一个框架。我已经使画布可滚动并将小部件粘贴在画布上,但它不可滚动。我附加了可滚动部分的代码。
w1 = Canvas(frame2, width=600, height=300,background="white", scrollregion=(1500,1500,3000,3000))
scr_h1 = ttk.Scrollbar(frame2,orient=HORIZONTAL)
scr_h1.pack(side=BOTTOM,fill=X)
scr_h1.config(command=w1.xview)
scr_v1 = ttk.Scrollbar(frame2,orient=VERTICAL)
scr_v1.pack(side=RIGHT,fill=Y)
scr_v1.config(command=w1.yview)
w1.config(xscrollcommand=scr_h1.set,yscrollcommand=scr_v1.set)
w1.pack(fill=BOTH,expand=True)
答案 0 :(得分:2)
此代码适用于运行Python 3.4 - 一个tkinter窗口弹出一个红色椭圆形(用于测试),滚动条允许您导航框架。如果您使用的是Python 2,请将tkinter
更改为Tkinter
(大写字母T)。
from tkinter import *
root = Tk()
frame2 = Frame(root)
frame2.pack(side=RIGHT)
w1 = Canvas(frame2, width=600, height=300,background="white", scrollregion=(0,0,3000,3000))
scr_h1 = Scrollbar(frame2,orient=HORIZONTAL)
scr_h1.pack(side=BOTTOM,fill=X)
scr_h1.config(command=w1.xview)
scr_v1 = Scrollbar(frame2,orient=VERTICAL)
scr_v1.pack(side=RIGHT,fill=Y)
scr_v1.config(command=w1.yview)
w1.config(xscrollcommand=scr_h1.set,yscrollcommand=scr_v1.set)
w1.pack(fill=BOTH,expand=True)
# inserted to see if it's actually scrolling
w1.create_oval(0,0,50,50,fill='red')
root.mainloop()
两个可能的问题
有两个框架或它们的方向并不重要,但如果你试图混合管理器(网格,包装等),你可能会遇到问题。这些问题更多的是停滞不前的程序,而不是静止的滚动条。