首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改(例如)滚动文本高度的tkinter几何值?

如何更改(例如)滚动文本高度的tkinter几何值?
EN

Stack Overflow用户
提问于 2022-11-05 14:27:53
回答 1查看 36关注 0票数 1

我想知道tkinter中的几何()函数值是如何处理例如滚动文本的高度值的?我怎样才能使这些单位相互配合?

例如:如果我想通过单击按钮打开tkinter窗口下面的滚动文本框,我知道我需要更改窗口的几何图形()(高度)值,但我不知道确切的值是多少。

(在下面的示例中,我向打开的函数中的几何值随机添加了100。但是我想要一个更具体的值,它可以转换为滚动文本的高度值的7)

代码语言:javascript
运行
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-05 15:12:22

包含文本的小部件通常在字符空间中提供它们的宽度和高度。这意味着tkinter获取字体的平均宽度和高度,并将其与widthheight中的给定数字相乘。

如果您想要将字符转换为像素,或者通过tk.Font.measure询问小部件的大小,或者通过winfo询问小部件的大小,那么主要有两种方法来解决这个问题,要么是winfo,要么是metrics。幸运的是,你的案子适合后者。

备用代码如下所示:

代码语言:javascript
运行
复制
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,这可能导致意外的行为。此外,我想知道你为什么要这样做,而不只是让几何管理人员做他们的工作?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74328563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档