我有当前代码(从原始代码中删减) - 此代码段也可在此处获得。
import tkinter as tk
import tkinter.ttk as ttk
class ScrolledFrame(tk.Frame):
def __init__(self, master, **kw):
tk.Frame.__init__(self, master, **kw)
vsb = tk.Scrollbar(self, orient='vertical')
vsb.grid(column=1, row=0, sticky='ns')
hsb = tk.Scrollbar(self, orient='horizontal')
hsb.grid(column=0, row=1, sticky='ew')
self.canvas = canvas = tk.Canvas(self, bd=0, highlightthickness=0,
yscrollcommand=vsb.set, xscrollcommand=hsb.set)
canvas.grid(row=0, column=0, sticky='nsew')
#canvas.configure(scrollregion=canvas.bbox('all'))
vsb.config(command=canvas.yview)
hsb.config(command=canvas.xview)
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(0, weight=1)
# reset the view
canvas.xview_moveto(0)
canvas.yview_moveto(0)
self.interior = interior = tk.Frame(canvas)
interior_id = canvas.create_window(0, 0, window=interior,
anchor='nw')
def _configure_interior(event):
size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
canvas.config(scrollregion="0 0 %s %s" % size)
if interior.winfo_reqwidth() != canvas.winfo_width():
canvas.config(width=interior.winfo_reqwidth())
interior.bind('<Configure>', _configure_interior)
def _configure_canvas(event):
if interior.winfo_reqwidth() != canvas.winfo_width():
canvas.itemconfigure(interior_id, width=canvas.winfo_width())
canvas.bind('<Configure>', _configure_canvas)
代码的目的是有一个框架,可以通过 x 和 y 轴滚动;但是,出现了一个问题,即在 x 轴上滚动会导致未绘制项目:
然而,y 轴似乎工作得很好 - 我试图通过不同scrollregion=
设置(即'all'
)的程序进行更改,但没有成功,它似乎完全删除了 x 轴的功能。
慕姐4208626
相关分类