Python 如何在Tkinter中设置窗口或框架内所有窗口小部件的填充
我创建了一个有两个按钮的窗口,并设置了两个按钮的填充Python 如何在Tkinter中设置窗口或框架内所有窗口小部件的填充,python,tkinter,Python,Tkinter,我创建了一个有两个按钮的窗口,并设置了两个按钮的填充 from tkinter import * window = Tk() Button(window, text="Click Me").pack(padx=10, pady=10) Button(window, text="Click Me").pack(padx=10, pady=10) window.mainloop() 我想从pack()中删除padx和pady参数,并得到相同的结果。我该怎么做呢?你不能完全按照自己的意愿去做。没有
from tkinter import *
window = Tk()
Button(window, text="Click Me").pack(padx=10, pady=10)
Button(window, text="Click Me").pack(padx=10, pady=10)
window.mainloop()
我想从
pack()
中删除padx
和pady
参数,并得到相同的结果。我该怎么做呢?你不能完全按照自己的意愿去做。没有用于定义pack
的padx和pady值的全局配置,以消除调用pack
时显式包含这些值的需要。不过,您可以将值放在变量中,这样,如果以后要更改值,只需在一个位置进行更改
padx = 10
pady = 10
Button(...).pack(padx=padx, pady=pady)
当然,您还可以定义自己的pack
命令,该命令在每次调用时自动应用所需的任何值
几乎肯定有更好的方法来解决您的实际问题,但是对于问题中的人为示例,您最好在每次调用
pack()
时使用padx
和pady
参数,如果小部件位于框架或主tk
窗口中,您可以执行以下操作:
for child in frame_name.winfo_children():
child.grid_configure(padx=10, pady=10)
相关报道:@BryanOakley,这似乎符合要求,但你说不可能。我是不是遗漏了什么?@Felipe这个解决方案仍然会为每个单独的项目分配填充。我想@BrianOakley的意思是没有与
frame\u name.grid\u configure\u children(padx=10,pady=10)
@Felipe:这个问题专门问了如何在创建小部件时设置全局填充值而不指定它。我认为这也意味着他们不想在以后调用pack\u configure
时指定它。
def pack_configure_recursive(widget, **kwargs):
stack = list(widget.winfo_children())
while stack:
descendent = stack.pop()
stack.extend(descendent.winfo_children())
descendent.pack_configure(**kwargs)
...
pack_configure_recursive(window, padx=10, pady=10)