【发布时间】:2021-08-15 00:22:59
【问题描述】:
我有一个 tkinter 程序,它具有从 youtube 教程复制的以下功能,可随着窗口大小的变化动态调整画布大小。
def resize_image(event):
global image, resized_image, new_image
image = Image.open('1613768_night-sky-png-meteor-stars-night-sky-meteorday.png')
resized_image = image.resize((event.width, event.height), Image.ANTIALIAS)
new_image = ImageTk.PhotoImage(resized_image)
canvas.create_image(0, 0, image=new_image, anchor='nw')
我的画布边界从它开始占据整个屏幕,因为如果我不这样做,那么图像将永远无法覆盖整个屏幕。但是,我希望窗口以小于全屏的尺寸打开。因此,完整的图像是不可见的,因为它超出了窗口边界,并且只有在我调整它的大小后才适合窗口,所以一开始你真的只能看到图像的左上象限。有没有办法通过向 resize_image 传递一个错误事件来触发 resize_image,例如 1x1 调整窗口大小?
如果这有帮助,我正在使用 .place() 将我的画布放在屏幕上。我正在使用网格,但我无法将图像添加到网格,因为它不能用作背景图像,并且我不能使用 .pack() 的扩展选项,因为我已经在使用网格了。
另外,在窗口中的任何地方人为的鼠标点击都不起作用,它必须是人为的调整大小的尝试。
【问题讨论】:
标签: python image tkinter window python-imaging-library