如何将event.width存储在python中的变量中?

问题描述

我有一个显示tkinter窗口尺寸的脚本,我想知道如何将这些值设置为变量?

代码如下:

import tkinter as tk
from tkinter import PhotoImage

root = tk.Tk()
canvas = tk.Canvas(root)
canvas.pack(fill="both",expand=True)

def canvas_changed(event):
    global WW
    WW = event.width
    global HH
    HH = event.height

img = PhotoImage(file="competeButton.png")
foo = canvas.create_image(image=img,width=WW,height=HH)
foo.pack(fill="both",expand=True)

root.mainloop()

在此先感谢您的帮助。

解决方法

您没有什么特别的事情要做。数据就是数据,无论它来自窗口小部件,数据库还是其他任何东西。

下面是将值保存到全局变量的示例:

def canvas_changed(event):
    global canvas_width
    canvas_width = event.width
,

创建一个包含所有图像并调整其大小的类。然后发出if语句以在每次更改时调用这些值。这是您可能会做的一个示例:

import tkinter as tk
from PIL import Image,ImageTk


class MainFrame(tk.Tk):
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.canvas = tk.Canvas(self)
        self.canvas.pack(fill=tk.BOTH,expand=1)
        self.canvas.bind("<Configure>",self.resize)
        self.img = ImageTk.PhotoImage(Image.open(r"competeButton.png"))
        self.canvas_img = self.canvas.create_image(0,anchor="nw",image=self.img)

    def resize(self,event):
        img = Image.open(r"competeButton.png").resize((event.width,event.height),Image.ANTIALIAS)
        self.img = ImageTk.PhotoImage(img)
        self.canvas.itemconfig(self.canvas_img,image=self.img)


if __name__ == "__main__":
    main_frame = MainFrame()
    main_frame.mainloop()