如何解决当窗口调整大小时,如何自动调整框架,使用网格的tkinter小部件的大小?
我想创建一个包含一个主框架的GUI,该框架包含多个框架,每个框架包含一个或多个tkinter小部件(标签,按钮,条目等)。每个小部件都使用GRID定位。我还希望通过按窗口右上角的Windows按钮或使用鼠标来更改窗口的尺寸时,所有小部件和文本的大小都可以调整。 可能吗? 谢谢
解决方法
是的,如果您使用grid()
方法,尽管窗口小部件大小会自动完成。您将不得不更改小部件上的字体大小。为了使字体能够根据窗口调整大小,您可能会有些棘手。您可以在以下事件中使用简单的if语句来获取不同的大小。
window = Tk()
def on_resize(self,event):
w_height = window.winfo_height()
w_width = window.winfo_width()
if(w_height > 500 and w_width > 600):
a_label.configure(font=("Helvetica","16")
else:
a_label.configure(font=("Helvetica","14")
window.bind(<Configure>,on_resize)
您还可以根据最初对窗口进行编程的方式来创建比例。
programmed_height = 1080
programmed_width = 1920
programmed_font = 16
window = Tk()
def on_resize(self,event):
w_height = window.winfo_height()
w_width = window.winfo_width()
if(w_width/w_height > programmed_width/programmed_height): # compare ratio
scaler = w_height / programmed_height
else:
scaler = w_width / programmed_width
font_size = programmed_font * scaler
font_tuple = ("Helvetica",str(int(font_size))) # int() should truncate any decimal points. You could also use round() if you prefer
window.bind(<Configure>,on_resize)
此代码是抽象的,因此事情不一定正确a_label
未声明。我也不确定比率比较是否足以满足您的需求。因为它可能会过早更改缩放器(
如果您有任何问题,请告诉我,也许我可以帮忙。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。