Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter:向画布添加滚动条_Python_Python 3.x_Tkinter_Scrollbar_Tkinter Canvas - Fatal编程技术网

Python Tkinter:向画布添加滚动条

Python Tkinter:向画布添加滚动条,python,python-3.x,tkinter,scrollbar,tkinter-canvas,Python,Python 3.x,Tkinter,Scrollbar,Tkinter Canvas,我试图在tkinter窗口中添加一个滚动条,该窗口保持不变并在一个框架中滚动。但是,每当我启动应用程序时,滚动条就会变灰。以下是我的代码的相关摘录: self.bigFrame = ttk.Frame(self,width = 1080,height = 500) self.hsb = tk.Scrollbar(self.bigFrame,orient = "horizontal") self.hsb.pack(side = TOP, fill = X) se

我试图在tkinter窗口中添加一个滚动条,该窗口保持不变并在一个框架中滚动。但是,每当我启动应用程序时,滚动条就会变灰。以下是我的代码的相关摘录:

    self.bigFrame = ttk.Frame(self,width = 1080,height = 500)
    self.hsb = tk.Scrollbar(self.bigFrame,orient = "horizontal")
    self.hsb.pack(side = TOP, fill = X)


    self.treeCanvas = tk.Canvas(self.bigFrame,width = 1080,height = 500,xscrollcommand = self.hsb.set)




    self.treeFrame = tk.Frame(self.treeCanvas,width = 1080,height = 500)




    self.treeCanvas.create_window((0,0),window=self.treeFrame,anchor = 'nw')
    self.treeCanvas.config(scrollregion  = self.treeCanvas.bbox("all"))
    self.treeCanvas.pack(side = BOTTOM,fill = X)
    self.treeFrame.pack(side = BOTTOM,fill = X)

    self.hsb.config(command = self.treeCanvas.xview)





    self.tree = ttk.Treeview(self.treeFrame,selectmode='browse',height = 100, columns = ('name','purchaseprice','previousprices','listingprice','buyingformat','postage','fees','potprofit','offers','viewcount','sold','offertaken','username','dispatch','delivered','returned','relist','feedback'))
    self.tree.heading('#0',text = 'saleID',anchor = 'w')
    self.tree.heading('name',text = "Item Name",anchor = 'w')
    self.tree.heading('purchaseprice',text = "Purchase Price",anchor = 'w')
    self.tree.heading('previousprices',text = "Previous Prices",anchor = 'w')
    self.tree.heading('listingprice',text = "Listing Price", anchor = 'w')
    self.tree.heading('buyingformat',text = "Buying Format",anchor = 'w')
    self.tree.heading('postage',text = "Postage",anchor = 'w')
    self.tree.heading('fees',text = "Fees",anchor = 'w')
    self.tree.heading('potprofit',text = "Potential Profit",anchor = 'w')
    self.tree.heading('offers',text = "Best Offer",anchor = 'w')
    self.tree.heading('viewcount',text = "Viewcount",anchor = 'w')
    self.tree.heading('sold',text = "Sold?",anchor = 'w')
    self.tree.heading('offertaken',text = "Offer Taken?",anchor = 'w')
    self.tree.heading('username',text = "Username",anchor = 'w')
    self.tree.heading('dispatch',text = "Dispatched?",anchor = 'w')
    self.tree.heading('delivered',text = "Delivered?",anchor = 'w')
    self.tree.heading('returned',text = "Returned?",anchor = 'w')
    self.tree.heading('relist',text = "Relisted?",anchor = 'w')
    self.tree.heading('feedback',text = "Feedback",anchor = 'w')


    self.tree.pack(side = BOTTOM, fill = X)

    self.bigFrame.grid(row = 11,column = 0,columnspan = 100,pady=(5,0),sticky = 'nw')
    self.bigFrame.grid_rowconfigure(0,weight = 1)
    self.bigFrame.grid_columnconfigure(0,weight = 1)
    self.bigFrame.grid_propagate(False)

我确信这是行的顺序问题,但我尝试过的顺序都不起作用。

您的滚动条变灰的原因是您缺少这一行:

self.treeFrame.update_idletasks()
下面是在代码的其余部分实现的

...
self.treeCanvas.create_window((0,0),window=self.treeFrame,anchor = 'nw')

# add this
self.treeFrame.update_idletasks()
bbox = self.treeCanvas.bbox(tk.ALL)

# Update this
self.treeCanvas.config(scrollregion=bbox, width=DISPLAY_WIDTH, height=DISPLAY_HEIGHT)

self.treeCanvas.pack(side = BOTTOM,fill = X)
self.treeFrame.pack(side = BOTTOM,fill = X)
...

希望这个答案有帮助,如果没有,你可以试试,这对我有很大帮助。

尝试将滚动条的最大值设置为画布的宽度。