Tôi đang cố gắng xuất nội dung của cơ sở dữ liệu sang tiện ích Tkinter. Cơ sở dữ liệu có đủ hàng và cột để tôi cần có cả thanh cuộn ngang và dọc, nhưng tôi gặp khó khăn khi cuộn ngang và dọc để hoạt động đồng thời. Tôi thuyết bất khả tri về những Tkinter phụ tùng được sử dụng nhưng đây là thực hiện hiện tại của tôi:Thanh cuộn dọc và ngang trên tiện ích Tkinter
# Create root
self.root = Tk()
self.root.geometry('1000x500+0+0')
# Create canvas
self.canvas = Canvas(self.root)
self.canvas.pack(side=TOP, fill=BOTH, expand=TRUE)
# Create scrollbars
self.xscrollbar = Scrollbar(self.root, orient=HORIZONTAL, command=self.canvas.xview)
self.xscrollbar.pack(side=BOTTOM, fill=X)
self.yscrollbar = Scrollbar(self.root, orient=VERTICAL, command=self.canvas.yview)
self.yscrollbar.pack(side=RIGHT, fill=Y)
# Attach canvas to scrollbars
self.canvas.configure(xscrollcommand=self.xscrollbar.set)
self.canvas.configure(yscrollcommand=self.yscrollbar.set)
# Create frame inside canvas
self.frame = Frame(self.canvas)
self.canvas.create_window((0,0), window=self.frame, anchor=NW)
self.frame.bind('<Configure>', self.set_scrollregion)
# Write db contents to canvas
self.print_dbcontents()
# Invoke main loop
self.root.mainloop()
def set_scrollregion(self, event):
self.canvas.configure(scrollregion=self.canvas.bbox('all'))
Thực hiện điều này, tôi chỉ có thể được di chuyển để làm việc theo một hướng, tùy thuộc vào cách tôi gói vải:
self.canvas.pack(side=TOP, fill=BOTH, expand=TRUE) # scrolling works in x but not y
self.canvas.pack(side=LEFT, fill=BOTH, expand=TRUE) # scrolling works in y but not x
Tôi chỉ cần cuộn ngang và dọc để hoạt động đồng thời hoặc tìm giải pháp thay thế.
[Ví dụ cuộn] (http://www.tkdocs.com/tutorial/canvas.html#scrolling) từ hướng dẫn hoạt động như mong đợi (nhập phải được sửa đổi cho Python 2.x). – jfs