我想知道tkinter中的几何()函数值是如何处理例如滚动文本的高度值的?我怎样才能使这些单位相互配合?
例如:如果我想通过单击按钮打开tkinter窗口下面的滚动文本框,我知道我需要更改窗口的几何图形()(高度)值,但我不知道确切的值是多少。
(在下面的示例中,我向打开的函数中的几何值随机添加了100。但是我想要一个更具体的值,它可以转换为滚动文本的高度值的7)
from tkinter import *
from tkinter import scrolledtext
def open():
root.geometry(f'{frame_width}x{frame_height+100}')
st.pack(side="bottom")
frame_width = 900
frame_height = 500
root = Tk()
root.geometry(f'{frame_width}x{frame_height}')
root.configure(bg='white')
root.resizable(False, False)
open_st = Button(root, text="OPEN SCROLLED TEXT", command= open)
open_st.pack()
st = scrolledtext.ScrolledText(root, width=frame_width, height=7)
root.mainloop()
发布于 2022-11-05 15:12:22
包含文本的小部件通常在字符空间中提供它们的宽度和高度。这意味着tkinter获取字体的平均宽度和高度,并将其与width
和height
中的给定数字相乘。
如果您想要将字符转换为像素,或者通过tk.Font.measure
询问小部件的大小,或者通过winfo
询问小部件的大小,那么主要有两种方法来解决这个问题,要么是winfo
,要么是metrics
。幸运的是,你的案子适合后者。
备用代码如下所示:
def open_text():
st.pack(side="bottom")
width, window_height = root.winfo_width(), root.winfo_height()
requested_text_height = st.winfo_reqheight()
new_height = window_height + requested_text_height
root.geometry(f'{width}x{new_height}')
请注意,我已将您的函数命名不同。因为您在模块的全局命名空间中重新定义了open
,这可能导致意外的行为。此外,我想知道你为什么要这样做,而不只是让几何管理人员做他们的工作?
https://stackoverflow.com/questions/74328563
复制相似问题