Python 调整程序窗口大小后如何捕捉宽度和高度(tkinter)

Python 调整程序窗口大小后如何捕捉宽度和高度(tkinter),python,tkinter,Python,Tkinter,(tkinter)我想在调整大小后立即捕捉窗口的宽度和高度。我该怎么做呢?有什么方法吗 编辑的问题: deets,它不是重复的。因为有画布,这个方法 self.scale("all",0,0,wscale,hscale) 不适用于框架。我仍然不知道如何调整框架的大小,以便在调整它的大小后,它的宽度和高度与窗口相同。(就像在photoshop中一样,我调整了窗口的大小,背景也在改变大小) Bryan,如你所说,我试图用调整大小,但不起作用。我在我想用“!!”做的地方贴了标签评论。我的代码:

(tkinter)我想在调整大小后立即捕捉窗口的宽度和高度。我该怎么做呢?有什么方法吗

编辑的问题:

deets,它不是重复的。因为有画布,这个方法

self.scale("all",0,0,wscale,hscale)
不适用于框架。我仍然不知道如何调整框架的大小,以便在调整它的大小后,它的宽度和高度与窗口相同。(就像在photoshop中一样,我调整了窗口的大小,背景也在改变大小)

Bryan,如你所说,我试图用调整大小,但不起作用。我在我想用“!!”做的地方贴了标签评论。我的代码:

    from tkinter import *
import ctypes


class Main(Frame):
    def __init__(self, main):
        Frame.__init__(self, main)
        # Vars that will be defined by user:
        self.canvas_width = 600
        self.canvas_height = 600

        self.frame_width = 750
        self.frame_height = 600

        # Flexible widgets when window size alters:
        main.columnconfigure(0, weight=1)
        main.rowconfigure(0, weight=1)


        # Canvas and frame
        self.canvas_frame = Frame(main, width=self.frame_width, height=self.frame_height, relief='groove')
        self.canvas_frame.grid(row=1, column=1)
        self.canvas_frame.grid_propagate(False)
        self.canvas = Canvas(self.canvas_frame, width = self.canvas_width, height = self.canvas_height,
                        bg='bisque')
        self.canvas.grid(row=0, column=0)

        # Right click menu
        self.rmenu = Menu(self.canvas_frame, tearoff=0, takefocus=0)
        self.rmenu.add_command(label='Add', command=self.hello)
        self.canvas.bind("<ButtonPress-3>", self.popup)

        # Bind
        self.canvas.bind("<ButtonPress-1>", self.scroll_start)
        self.canvas.bind("<B1-Motion>", self.scroll_move)

        self.canvas_frame.bind("<Configure>", self.on_resize) # !!!!



    # resizing window:
    def on_resize(self, event): # !!!!
        # determine the ratio of old width/height to new width/height
        self.canvas_frame.width = event.width
        self.canvas_frame.height = event.height
        # resize the canvas
        self.canvas_frame.config(width=self.canvas_frame.width, height=self.canvas_frame.height)
        print(self.canvas_frame.width)  # return the same height and width
        print(self.canvas_frame.height) # after resizing

if __name__ == '__main__':
    main = Tk()
    Main(main)
    main.mainloop()
从tkinter导入*
导入ctypes
类主(框架):
定义初始化(自,主):
帧。\uuuu初始化(自,主)
#将由用户定义的变量:
self.canvas_width=600
self.canvas_高度=600
self.frame_width=750
自车架高度=600
#窗口大小改变时的灵活小部件:
main.columnconfigure(0,权重=1)
main.rowconfigure(0,权重=1)
#帆布和框架
self.canvas\u frame=frame(main,width=self.frame\u width,height=self.frame\u height,relief='groove')
self.canvas\u frame.grid(行=1,列=1)
self.canvas\u frame.grid\u propagate(False)
self.canvas=canvas(self.canvas\u框架,宽度=self.canvas\u宽度,高度=self.canvas\u高度,
bg='bisque')
self.canvas.grid(行=0,列=0)
#右击菜单
self.rmenu=菜单(self.canvas\u frame,tearoff=0,takefocus=0)
self.rmenu.add\u命令(label='add',command=self.hello)
self.canvas.bind(“,self.popup)
#束缚
self.canvas.bind(“,self.scroll\u start)
self.canvas.bind(“,self.scroll\u move)
self.canvas_frame.bind(“,self.on_resize)#!!!!
#调整窗口大小:
def on_resize(自我,事件):#!!!!
#确定旧宽度/高度与新宽度/高度的比率
self.canvas_frame.width=event.width
self.canvas_frame.height=event.height
#调整画布的大小
self.canvas\u frame.config(width=self.canvas\u frame.width,height=self.canvas\u frame.height)
打印(self.canvas_frame.width)#返回相同的高度和宽度
调整大小后打印(自我.画布_框架.高度)#
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main=Tk()
主要(主要)
main.mainloop()

这是否回答了您的问题@deets请看我编辑的问题“我仍然不知道如何调整框架大小”-这与询问如何捕捉调整大小事件完全不同。