程序启动后如何改变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 屏幕 width
和 winfo_screenheight()
用于 height
屏幕像素.
window.geometry()
需要时可以调用。
编辑:在程序启动后调用 window.geometry()
的示例(即使在水平调整大小被禁用后):
def resizeScreen():
window.geometry('520x300')
b = Button(window, text="RESIZE", command=resizeScreen)
b.pack()
只要单击此按钮,屏幕就会根据当前的大小进行调整。
您可以在不使用按钮的情况下调用相同的函数,只需调用该函数即可。这取决于你的代码,你如何使用它。
我希望程序启动后检查其实际大小,当“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 屏幕 width
和 winfo_screenheight()
用于 height
屏幕像素.
window.geometry()
需要时可以调用。
编辑:在程序启动后调用 window.geometry()
的示例(即使在水平调整大小被禁用后):
def resizeScreen():
window.geometry('520x300')
b = Button(window, text="RESIZE", command=resizeScreen)
b.pack()
只要单击此按钮,屏幕就会根据当前的大小进行调整。 您可以在不使用按钮的情况下调用相同的函数,只需调用该函数即可。这取决于你的代码,你如何使用它。