问题描述
我有一个显示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()