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