程序启动后如何改变window大小?

How to change the window size after the program starts?

我希望程序启动后检查其实际大小,当“window.winfo_width > 520”时将其大小更改为 520。这可能吗?

from tkinter import *
from time import *

def upd():
    tstr = strftime("%I:%M:%S %p")
    ltime.config(text=tstr)

    lday.config(text=strftime("%A"))

    dtstr = strftime("%B %d, %Y")
    ldate.config(text=dtstr)
    ltime.after(1000, upd)


window = Tk()
window.config(bg='black')
window.title("Clock")
window.geometry('520x300')
window.resizable(0,1)


ltime = Label(window, font="Adobe 60", text='', fg='green', bg='black')
ltime.pack()
lday = Label(window, font="Adobe 60", text='', fg='green', bg='black')
lday.pack()
ldate = Label(window, font="Adobe 60", text='', fg='green', bg='black')
ldate.pack()

upd()

window.mainloop()

首先,window.winfo_geometry()会给你window的几何结构。

要仅获取宽度,请使用 window.winfo_width()

仅获取高度,使用window.winfo_height()

例如

if window.winfo_width() > 520 :
     window.geometry('520x300')

现在,由于您使用的是 window.resizable(0,1),因此您禁用了 window 的宽度调整,因此 windows 的宽度将固定为 520。 那么,如果它不能调整大小,它怎么会超过 520? 如果你启用它,然后希望window的宽度不超过520:

Tkinter 提供 .maxsize().minsize() 来固定根的大小 window。

例如如果你想让window的宽度不超过520,就把maxsize的宽度设置为520即可。

window.geometry('520x300')
window.maxsize(520, 300)

现在 window 的宽度不会调整超过 520。


如果您想根据用户屏幕的大小调整大小:

要获取屏幕尺寸,您可以使用 winfo_screenwidth() 其中 returns 屏幕 widthwinfo_screenheight() 用于 height 屏幕像素.

window.geometry() 需要时可以调用。


编辑:在程序启动后调用 window.geometry() 的示例(即使在水平调整大小被禁用后):

def resizeScreen():
    window.geometry('520x300')

b = Button(window, text="RESIZE", command=resizeScreen)
b.pack()

只要单击此按钮,屏幕就会根据当前的大小进行调整。 您可以在不使用按钮的情况下调用相同的函数,只需调用该函数即可。这取决于你的代码,你如何使用它。