Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 使用布局管理器网格动态调整带有滚动条的画布大小_Python_Python 3.x_Tkinter_Tkinter Canvas - Fatal编程技术网

Python 使用布局管理器网格动态调整带有滚动条的画布大小

Python 使用布局管理器网格动态调整带有滚动条的画布大小,python,python-3.x,tkinter,tkinter-canvas,Python,Python 3.x,Tkinter,Tkinter Canvas,我做了一个画布,我不知道为什么,我不会让它与框架调整大小。 要么是一些明显的东西丢失了,然后把里面所有的东西都弄得乱七八糟,要么是一些奇怪的事情发生了,我不明白。不管怎么说,这是我的代码,希望它能被清除 import tkinter as tk root = tk.Tk() class my_figure(tk.Frame): def __init__(self, master, width=450,height=590): tk.F

我做了一个画布,我不知道为什么,我不会让它与框架调整大小。 要么是一些明显的东西丢失了,然后把里面所有的东西都弄得乱七八糟,要么是一些奇怪的事情发生了,我不明白。不管怎么说,这是我的代码,希望它能被清除

import tkinter as tk

root = tk.Tk()

class my_figure(tk.Frame):
    def __init__(self, master,
                 width=450,height=590):
        tk.Frame.__init__(self, master)
        self.master = master
        self.width=width
        self.bind("<Configure>", self.update)

        #DownFrame
        self.body = tk.Frame(self, width=width,height=height,relief='sunken',bd=2)
        self.vscrbar = tk.Scrollbar(self.body)
        self.hscrbar = tk.Scrollbar(self.body,orient=tk.HORIZONTAL)
        self.Display = tk.Canvas(self.body, width=width,height=height,
                                 background='#f0f0f0',highlightthickness=0,
                                 yscrollcommand=self.vscrbar.set,
                                 xscrollcommand=self.hscrbar.set)
        
        self.vscrbar.config(command=self.Display.yview)
        self.hscrbar.config(command=self.Display.xview)

        self.body.grid(column=0,row=1, sticky='nswe')
        self.vscrbar.grid(column=1,sticky='ns')
        self.hscrbar.grid(row=1,sticky='we')
        self.Display.grid(column=0,row=0,
                          sticky='nswe')

        
        self.grid_rowconfigure(1, weight=1)
        self.columnconfigure(0, weight=1)

    def update(self, event):
        print(event.widget.winfo_width())
##        self.Header.config(width=event.width)
##        self.Button.config(width=event.width)
##        self.body.config(width=event.width)
##        self.Display.config(width=event.width)
        

        
figure = my_figure(root)
figure.grid(column=0, row=0)
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0,weight=1)

root.mainloop()
将tkinter作为tk导入
root=tk.tk()
类别my_图形(tk.框架):
定义初始(自我,主,
宽度=450,高度=590):
tk.Frame.\uuuuu init\uuuuuuu(自,主)
self.master=master
自身宽度=宽度
self.bind(“,self.update”)
#底架
self.body=tk.Frame(self,width=width,height=height,relief='sinken',bd=2)
self.vscrbar=tk.Scrollbar(self.body)
self.hscrbar=tk.Scrollbar(self.body,orient=tk.HORIZONTAL)
self.Display=tk.Canvas(self.body,width=width,height=height,
背景='#f0',高光厚度=0,
yscrollcommand=self.vscrbar.set,
xscrollcommand=self.hscrbar.set)
self.vscrbar.config(命令=self.Display.yview)
self.hscrbar.config(命令=self.Display.xview)
self.body.grid(列=0,行=1,sticky='nswe')
self.vscrbar.grid(column=1,sticky='ns')
self.hscrbar.grid(row=1,sticky='we')
self.Display.grid(列=0,行=0,
粘性('nswe')
self.grid_rowconfigure(1,权重=1)
self.columnconfigure(0,权重=1)
def更新(自身、事件):
打印(event.widget.winfo_width())
##self.Header.config(宽度=事件宽度)
##self.Button.config(宽度=事件宽度)
##self.body.config(宽度=事件宽度)
##self.Display.config(宽度=事件宽度)
图=我的图(根)
图.网格(列=0,行=0)
root.grid\u columnconfigure(0,权重=1)
root.grid_rowconfigure(0,权重=1)
root.mainloop()

您使用了嵌套的父容器。您的
my_figure
是从
Frame
继承的小部件。您的
my_figure
中还有一个
Frame
小部件。您需要为这两个小部件设置
columnconfigure
rowconfigure

还需要为您的
图形使用
sticky=“nwes”

虽然它可以正常工作,
pack
manager将是最佳选择

代码:

将tkinter作为tk导入
root=tk.tk()
类别my_图形(tk.框架):
定义初始(自我,主):
tk.Frame.\uuuuu init\uuuuuuu(自,主)
self.master=master
#自我[“bd”]=10
self.bind(“,self.update”)
#底架
self.body=tk.Frame(self,relief='sunken')
对于范围内的i(self.body.grid_size()[1]+1):
self.body.grid_rowconfigure(i,权重=1)
对于范围内的i(self.body.grid_size()[0]+1):
self.body.grid_column配置(i,权重=1)
对于范围内的i(self.grid_size()[1]+1):
self.grid_rowconfigure(i,权重=1)
对于范围内的i(self.grid_size()[0]+1):
self.grid\u column配置(i,权重=1)
self.vscrbar=tk.Scrollbar(self.body)
self.hscrbar=tk.Scrollbar(self.body,orient=tk.HORIZONTAL)
self.Display=tk.Canvas(self.body,
背景='#f0',高光厚度=0,
yscrollcommand=self.vscrbar.set,
xscrollcommand=self.hscrbar.set)
self.vscrbar.config(命令=self.Display.yview)
self.hscrbar.config(命令=self.Display.xview)
self.body.grid(列=0,行=0,sticky='nswe')
self.vscrbar.grid(行=0,列=1,sticky='ns')
self.hscrbar.grid(行=1,列=0,sticky='we')
self.Display.grid(列=0,行=0,
粘性('nswe')
def更新(自身、事件):
打印(event.widget.winfo_width())
##self.Header.config(宽度=事件宽度)
##self.Button.config(宽度=事件宽度)
##self.body.config(宽度=事件宽度)
##self.Display.config(宽度=事件宽度)
图=我的图(根)
图.网格(列=0,行=0,sticky=“nwes”)
root.grid\u columnconfigure(0,权重=1)
root.grid_rowconfigure(0,权重=1)
root.mainloop()
import tkinter as tk

root = tk.Tk()


class my_figure(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)
        self.master = master
        # self["bd"] = 10
        self.bind("<Configure>", self.update)

        # DownFrame
        self.body = tk.Frame(self, relief='sunken')
        for i in range(self.body.grid_size()[1] + 1):
            self.body.grid_rowconfigure(i, weight=1)

        for i in range(self.body.grid_size()[0] + 1):
            self.body.grid_columnconfigure(i, weight=1)

        for i in range(self.grid_size()[1] + 1):
            self.grid_rowconfigure(i, weight=1)

        for i in range(self.grid_size()[0] + 1):
            self.grid_columnconfigure(i, weight=1)

        self.vscrbar = tk.Scrollbar(self.body)
        self.hscrbar = tk.Scrollbar(self.body, orient=tk.HORIZONTAL)
        self.Display = tk.Canvas(self.body,
                                 background='#f0f0f0', highlightthickness=0,
                                 yscrollcommand=self.vscrbar.set,
                                 xscrollcommand=self.hscrbar.set)

        self.vscrbar.config(command=self.Display.yview)
        self.hscrbar.config(command=self.Display.xview)

        self.body.grid(column=0, row=0, sticky='nswe')
        self.vscrbar.grid(row=0, column=1, sticky='ns')
        self.hscrbar.grid(row=1, column=0, sticky='we')
        self.Display.grid(column=0, row=0,
                          sticky='nswe')

    def update(self, event):
        print(event.widget.winfo_width())


##        self.Header.config(width=event.width)
##        self.Button.config(width=event.width)
##        self.body.config(width=event.width)
##        self.Display.config(width=event.width)


figure = my_figure(root)
figure.grid(column=0, row=0, sticky="nwes")
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0,weight=1)

root.mainloop()