データベースの内容をTkinterウィジェットに出力しようとしています。データベースには、水平スクロールバーと垂直スクロールバーの両方を有効にするのに十分な行と列がありますが、水平スクロールと垂直スクロールを同時に実行するのは苦労しています。私はTkinterのウィジェットが使用されているかについて不可知論だが、ここに私の現在の実装である: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'))
この実装では、私は、私はキャンバスをパックする方法に応じて、1つの方向に動作するようにスクロールを取得することができます。
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
同時に動作させるには、水平スクロールと垂直スクロールが必要です。または、別の解決策を見つけることもできます。
チュートリアルの[スクロールの例](http://www.tkdocs.com/tutorial/canvas.html#scrolling)は、期待通りに機能します(Python 2.x用にインポートを修正する必要があります)。 – jfs