列中按钮之间的垂直填充

时间:2015-01-26 13:42:42

标签: python tkinter

当我填充小部件时,它们只是在一个大块中的同一帧上一起移动。我需要能够将它们分开,并在同一帧上的每个小部件之间添加填充。这是我尝试的代码的一部分:

def CreateDisplay(self):

    self.mainwindow = tk.Tk()
    self.mainwindow.geometry("800x600")
    self.mainwindow.wm_title(self.constants.NAME)
    self.mainwindow.resizable(width=False, height=False)

    self.frame_main = tk.Frame(master = self.mainwindow)
    self.frame_title = tk.Frame(master = self.frame_main)
    self.frame_test = tk.Frame(master = self.frame_main)
    self.frame_recentscore = tk.Frame(master = self.frame_main)
    self.frame_help = tk.Frame(master = self.frame_main)
    self.frame_exit = tk.Frame(master = self.frame_main)

    self.frame_main.pack(pady=15)
    self.frame_title.pack(anchor="c")
    self.frame_test.pack(pady=15)
    self.frame_recentscore.pack(pady=15)
    self.frame_help.pack(pady=15)
    self.frame_exit.pack(pady=15)

    self.label_title = tk.Label(self.frame_title, font=("purisa", 20), text="Business Studies Finance Revison:")

    self.label_title.pack()

    self.button_test = tk.Button(self.mainwindow, padx=54, pady=3, font=("Purisa",15), text="Take a Test", command=self.parent.test).pack()
    self.button_recentscore = tk.Button(self.mainwindow, font=("Purisa",15), text="View My Recent Scores", command=self.parent.recentscores).pack()
    self.button_help = tk.Button(self.mainwindow, padx=88, pady=3, font=("Purisa",15), text="Help", command=self.parent.help_mainwindow).pack()
    self.button_exit = tk.Button(self.mainwindow, padx=91, pady=3, font=("Purisa",15), text="Exit", command=self.parent.Exit).pack()

除了小部件之间的填充之外,一切都有效。 我把它的所有运行文件放在一个单独的文件中作为一个大项目。 窗口小部件定义中的填充只是为了塑造它们而不是在框架上移动它们。如何在列中的按钮之间添加垂直填充?

2 个答案:

答案 0 :(得分:3)

您想使用:

x = tkinter.Button(...)
x.pack(pady=8)

顺便提一句x = None

x = tkinter.Button(...).pack()

这是一个经典的初学者错误。

答案 1 :(得分:1)

您似乎误解了填充的工作原理。将padxpady值应用于窗口小部件时,该填充仅影响该窗口小部件。例如,如果为帮助按钮指定pady值为100,则仅影响帮助按钮。如果为帧指定pady值,则仅影响该帧相对于其父帧的填充方式。

例如,如果要为每个按钮填充20像素,则必须为每个按钮指定20像素的pady值。如果您希望按钮作为一组在组周围填充,则需要指定框架的填充。