(tkinter) Я хочу поймать ширину и высоту окна сразу после изменения размера. Как я могу это сделать, существуют ли какие-либо методы?
Отредактированный вопрос:
deets, Это не дубликат. Поскольку в ссылке есть canvas, и этот метод
self.scale("all",0,0,wscale,hscale)
не работает для Frame. Я до сих пор не знаю, как изменить размер фрейма, чтобы он имел ту же ширину и высоту, что и окно, после того как я изменил его размер. (Как и в фотошопе, я изменяю размер окна, а фон меняет размеры).
Брайан, Я пытался изменить размер, как вы сказали, но это не работает. Я отметил, где я пытался сделать это с помощью «!!!»комментарий. Мой код:
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()