python - 使用 pack(pady) 的 Tkinter 小部件没有移动

标签 python tkinter ttk

我正在尝试制作一个应用程序,但遇到了问题。有一个框架:

status_frame = Frame(self.root, height=60, style='status.TFrame') # white one at the top 
status_frame.pack_propagate(0)
status_frame.pack(fill=X)

有一个标签:

status_label = Label(status_frame, text='Label', style='status_bold.TLabel')

并使用 pack() 方法放置它:

status_label.pack(side=LEFT, padx=5)

padx=5 工作正常:

padx=5

但是如果我添加 pady=25 它不会移动,它会奇怪地切割:

pady=25

这是为什么?我如何向上移动Label?我需要将其与 pack() 一起放置。完整代码:

from tkinter import *
from tkinter.ttk import *

root = Tk()
root.geometry('400x250')
root.resizable(0, 0)

style = Style()
style.configure('status.TFrame', background='white')
style.configure('status_bold.TLabel', background='white', font=('Arial 9 bold'))
style.configure('status.TLabel', background='while')

status_frame = Frame(root, height=60, style='status.TFrame')
status_frame.pack_propagate(0)
main_frame = Frame(root, height=150)
main_frame.pack_propagate(0)
button_frame = Frame(root, height=40)
button_frame.pack_propagate(0)

status_label = Label(status_frame, text='Label', style='status_bold.TLabel')
left_button = Button(button_frame, text='Left')
right_button = Button(button_frame, text='Right')


status_frame.pack(fill=X)
Separator(root, orient=HORIZONTAL).pack(fill=X)
main_frame.pack(fill=X)
Separator(root, orient=HORIZONTAL).pack(fill=X)
button_frame.pack(fill=X)
status_label.pack(side=LEFT, padx=5, pady=25)
right_button.pack(side=RIGHT, padx=5)
left_button.pack(side=RIGHT)

root.mainloop()

最佳答案

由于您已关闭 status_frame 的几何传播并强制空间高度恰好为 60 像素,因此没有足够的空间容纳标签以及顶部和底部的 25 像素填充。有了这个填充,标签就只剩下 10 个像素了。 Tkinter 别无选择,只能从标签中删除像素。

如果您尝试使用 pady 将标签文本向下移动,您可以在顶部添加填充,如下所示:

status_label.pack(side=LEFT, padx=5, pady=(25, 0))

如果您希望顶部和底部都有填充,那么您不应该关闭几何传播。就我个人而言,我认为很少有情况下关闭传播是正确的做法。通过将传播保留在适当的位置,框架将增大或缩小,以便它始终适合子窗口小部件,这在 99% 以上的时间都是您想要的。

关于python - 使用 pack(pady) 的 Tkinter 小部件没有移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69917479/

相关文章:

python - 如果 __hash__ 被覆盖,Pickle/dill 无法处理循环引用

python - 在 tkinter/python 中嵌入 Slippy Map

python - 将 python 日历插入 tkinter 标签

Python Tkinter canvas.delete 失败

python - 更改字体大小时如何使条目小部件的标签位置正确更新?

python - Tkinter(ttk模块)和后台运行函数导致程序崩溃

python - 沙盒/逐行运行 python 代码

Python Social Auth NotAllowedToDisconnect at/disconnect/facebook/1/

python - _tkinter.Tcl错误: can't pack when trying to add ttkcalendar into tkinter GUI

python - 如何使用 python 修复字符串中不正确的 html 标签?