gpt4 book ai didi

python - 如何停止 Tkinter 文本小部件在字体更改时调整大小?

转载 作者:太空狗 更新时间:2023-10-29 22:20:00 24 4
gpt4 key购买 nike

我正在尝试为初学者创建一个简单的文字处理器,以便更好地学习 Python。

我在主编辑程序中使用 Tkinter Text 小部件,唯一的问题是 heightwidth 由字符定义.

这会在我更改字体时产生问题,因为并非所有字体的宽度都相同。

每次更改字体时,文本小部件都会重新调整大小,尽管从技术上讲它的宽度和高度是相同的。这在尝试输入内容时看起来很荒谬,我正在努力使文字处理器尽可能漂亮

有没有办法以像素为单位定义宽度和高度?

.grid_propagate(False) 没有用,因为尺寸在技术上没有改变,只有字符宽度。

我现在正试图远离 wxPython,因为到目前为止我所做的一切都在 Tkinter 中。

我进行了无数小时的广泛谷歌搜索,但没有找到解决方案。

最佳答案

当您说您不能使用 grid_propagate(False) 时,您错了,因为您可以。 grid_propagate实际 大小相关,而不是大小属性。此外,如果您只是使用 wm_geometry 为您的应用程序提供固定大小,则字体更改不会影响窗口的大小。

这是一个使用 grid_propagate 的示例,它将容器设置为以像素为单位的固定大小:

import Tkinter as tk
import tkFont

class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self._textFont = tkFont.Font(name="TextFont")
self._textFont.configure(**tkFont.nametofont("TkDefaultFont").configure())

toolbar = tk.Frame(self, borderwidth=0)
container = tk.Frame(self, borderwidth=1, relief="sunken",
width=600, height=600)
container.grid_propagate(False)
toolbar.pack(side="top", fill="x")
container.pack(side="bottom", fill="both", expand=True)

container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
text = tk.Text(container, font="TextFont")
text.grid(row=0, column=0, sticky="nsew")

zoomin = tk.Button(toolbar, text="+", command=self.zoom_in)
zoomout = tk.Button(toolbar, text="-", command=self.zoom_out)
zoomin.pack(side="left")
zoomout.pack(side="left")

text.insert("end", '''Press te + and - buttons to increase or decrease the font size''')

def zoom_in(self):
font = tkFont.nametofont("TextFont")
size = font.actual()["size"]+2
font.configure(size=size)

def zoom_out(self):
font = tkFont.nametofont("TextFont")
size = font.actual()["size"]-2
font.configure(size=max(size, 8))

if __name__ == "__main__":
app = SampleApp()
app.mainloop()

关于python - 如何停止 Tkinter 文本小部件在字体更改时调整大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9833698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com