Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 Tinker滚动条不使用画布小部件_Python_User Interface_Tkinter_Tkinter Canvas - Fatal编程技术网

Python Tinker滚动条不使用画布小部件

Python Tinker滚动条不使用画布小部件,python,user-interface,tkinter,tkinter-canvas,Python,User Interface,Tkinter,Tkinter Canvas,我一辈子都搞不明白为什么这样不行?我只是想让画布上有滚动条 我已经按照@BryanOakley的建议来回答这个问题,但我似乎不知道自己做错了什么 这是我的密码: import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): super().__init__(master, bg= "#E3E5E6") self.master = master

我一辈子都搞不明白为什么这样不行?我只是想让画布上有滚动条

我已经按照@BryanOakley的建议来回答这个问题,但我似乎不知道自己做错了什么

这是我的密码:

import tkinter as tk

class Application(tk.Frame):

    def __init__(self, master=None):
        super().__init__(master, bg= "#E3E5E6")
        self.master = master
        self.grid(sticky = "nesw")
        self.grid_rowconfigure(1, weight=1)
        self.grid_columnconfigure(0, weight=1) 

        self.canvas = tk.Canvas(master)
        self.canvas.create_oval(10, 10, 20, 20, fill="red")
        self.canvas.create_oval(200, 200, 220, 220, fill="blue")
        self.canvas.grid(row=0, column=0, sticky = "nesw")

        self.scroll_x = tk.Scrollbar(master, orient="horizontal", command=self.canvas.xview)
        self.scroll_x.grid(row=1, column=0, sticky="ew")

        self.scroll_y = tk.Scrollbar(master, orient="vertical", command=self.canvas.yview)
        self.scroll_y.grid(row=0, column=1, sticky="ns")

        self.canvas.configure(yscrollcommand=self.scroll_y.set, xscrollcommand=self.scroll_x.set)
        self.canvas.configure(scrollregion=self.canvas.bbox((0,0,15000,15000)))

if __name__ == "__main__":
    root = tk.Tk()

    root.grid_rowconfigure(0, weight=1)
    root.grid_columnconfigure(0, weight=1)
    root.geometry("{}x{}+0+0".format(600,400))

    app = Application(master=root)
    app.mainloop()
非常感谢您的帮助。

请更改以下内容:

self.canvas.configure(scrollregion=self.canvas.bbox((0,0,15000,15000)))
为此:

self.canvas.configure(scrollregion=(0,0,15000,15000))

scrollregion
属性需要四个坐标的元组。调用
bbox
可以返回该元组,但前提是您给它一个项目id或标记。您向它输入了一个元组,由于画布上没有任何项具有与元组相似的标记,因此它返回
None

我不知道没有你的帮助,怎么会有人在Tkinter学习编程