【问题标题】:Generate Artificial Window Resize TKinter Python生成人工窗口调整大小 TKinter Python
【发布时间】: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


    【解决方案1】:

    你可以使用这个随机导入

    from tkinter import *                                                                       # IMPORTS //////////////////
    import random
    
    root = Tk()                                                                                 # WINDOW ATTRIBUTES ////////
    size_x = random.randint(0, 999)    # x coord
    size_y = random.randint(0, 999)    # y coord
    root.geometry("%dx%d" % (size_x, size_y))   # format to decimal
    
    mainloop()
    

    【讨论】:

    • 不幸的是,这并不能解决问题,因为这只是将窗口设置为初始大小。我需要一种方法来在 tkinter 窗口打开后立即触发窗口调整大小。
    猜你喜欢
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2021-05-26
    • 2023-02-11
    • 2013-07-10
    • 1970-01-01
    相关资源
    最近更新 更多