0
我有一個畫布(對於ttk.Frame
沒有xview
,yview
方法)保持幀內,我想水平瀏覽,因爲它們在同一行。找到了一些教程,當他們處理不同的小部件組合時,我跟着他們,並嘗試將它們應用於我的問題,但沒有成功。我確實看到了一個滾動條,但它不會做任何事情或做出任何迴應。水平滾動條不能在Python中工作TKinter框架
class App:
def __init__(self,db):
self.db = db
self.root = tkinter.Tk()
self.masterframe = ttk.Frame(self.root)
self.masterframe.grid()
self.mastercanvas = tkinter.Canvas(self.masterframe)
self.mastercanvas.grid()
self.scrollbar = ttk.Scrollbar(self.masterframe,orient="horizontal",
command = self.mastercanvas.xview)
self.scrollbar.grid()
self.mastercanvas.configure(xscrollcommand=self.scrollbar.set)
for i,e in enumerate(self.db.elements):
xf = XFrame(self,e)
xf.grid(row=0,column=i,sticky="n")
編輯:
class XFrame:
def __init__(self,app,x):
self.app = app
self.x = x
self.frame = ttk.Frame(self.app.mastercanvas)
self.set_up() # this sets frame's padding and populates it with widgets
現在,在以往任何時候我貼的兩行代碼這裏建議* - 在第一INIT定義的結束,或在第二初始化結束定義 - 沒有新的事情發生。我看到我的框架出現,因爲我打算他們出現 - 其中3。第四部分。還有一個不起作用的滾動條。
*
self.update_idletasks() # using self.root in first, self.app.root in second variant
self.mastercanvas.configure(scrollregion=self.mastercanvas.bbox("all"))
# in second variant reffered to as self.app.mastercanvas ...
哪個對象應該調用'update_idletasks'?同時 - 接着是'scrollregion'配置 - 我試着從一個會話中調用它(根據會話),masterframe,mastercanvas,然後嘗試從'XFrame'類(它可以訪問'App')嘗試調用它們,但沒有任何效果。 –
哪個對象應該調用update_idletasks?沒關係。不管你怎麼稱呼,它都會做同樣的事情。 –
我已經更新了我的答案,以提供更多信息。也許你沒有看到任何效果,因爲畫布中沒有任何內容可以滾動。 –