我创建了一个带有两个按钮的窗口,并设置了两个按钮的填充。
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
sg24os4d1#
如果小部件位于框架或主tk窗口中,您可以执行以下操作:
tk
for child in frame_name.winfo_children(): child.grid_configure(padx=10, pady=10)
icomxhvb2#
你不能完全按照自己的意愿去做。没有全局配置来定义pack的padx和pady值,这样就不需要在调用pack时显式地包含这些值。不过,你可以把这些值放在variable中,这样如果你以后想修改这些值,你只需要在一个地方修改它。
pack
padx = 10 pady = 10 Button(...).pack(padx=padx, pady=pady)
当然,您也可以定义自己的pack命令,在每次调用它时自动应用您想要的任何值。几乎可以肯定有更好的方法来解决您的实际问题,但是对于问题中的人为示例,您所能做的最好的是在每次调用pack()时使用padx和pady参数。
cigdeys33#
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)
mmvthczy4#
您可以将Button子类化并重新定义pack()方法:
import tkinter as tk from tkinter import ttk class MyButton(ttk.Button): def pack(self, *args, **kwargs): super().pack(padx=10, pady=10, *args, **kwargs) root=tk.Tk() MyButton(text="Hello").pack() MyButton(text="World").pack() root.mainloop()
4条答案
按热度按时间sg24os4d1#
如果小部件位于框架或主
tk
窗口中,您可以执行以下操作:icomxhvb2#
你不能完全按照自己的意愿去做。没有全局配置来定义
pack
的padx和pady值,这样就不需要在调用pack
时显式地包含这些值。不过,你可以把这些值放在variable中,这样如果你以后想修改这些值,你只需要在一个地方修改它。当然,您也可以定义自己的
pack
命令,在每次调用它时自动应用您想要的任何值。几乎可以肯定有更好的方法来解决您的实际问题,但是对于问题中的人为示例,您所能做的最好的是在每次调用
pack()
时使用padx
和pady
参数。cigdeys33#
mmvthczy4#
您可以将Button子类化并重新定义pack()方法: