繁体   English   中英

如何使用.grid使用tkinter格式化GUI?

[英]How do I format my GUI using tkinter by using .grid?

我正在尝试使用.grid格式化我的GUI,但是它什么也没做。 以下是我的代码和所需的布局!

在此处输入图片说明 这是我正在使用的代码。 我对Python很陌生...

我不确定除.grid以外的其他格式化方法,因此任何其他选项也都不错!

from tkinter import *

class PayrollSummary:
    def __init__(pay):
        window = Tk()
        window.title("Employee Payroll")

        #Add Frame 1
        frame1 = Frame(window)
        frame1.pack()

        #Add ReadFile Button
        btReadFile = Button(frame1, text = "Read File")
        btReadFile.pack()

        #Add ShowPayroll Button
        btShowPayroll = Button(frame1, text = "Show Payroll")
        btShowPayroll.pack()

        #Add FindEmployee by Name Button
        btFindEmployee = Button(frame1, text = "Find Employee by Name")
        btFindEmployee.pack()

        #Add Highest Radio Button
        rbHigh = Radiobutton(frame1, text = "Highest")
        rbHigh.pack()

        #Add Lowest Radio Button
        rbLow = Radiobutton(frame1, text ="Lowest")
        rbLow.pack()

        #Add FindEmployee by Amount Button
        btFindEmployee_A = Button(frame1, text = "Find Employee by Amount")
        btFindEmployee_A.pack()

        #Add WriteOutput Button
        btOutput = Button(frame1, text = "Write Output to File")
        btOutput.pack()

        #Add Cancel Button
        btCancel = Button(frame1, text = "Cancel")
        btCancel.pack()



        btReadFile.grid(row = 1, column = 2)
        btShowPayroll.grid(row = 2, column = 2)
        btFindEmployee.grid(row = 2, column = 4)
        rbHigh.grid(row = 3, column = 2)
        rbLow.grid(row = 3, column = 4)
        btFindEmployee_A.grid(row = 3, column = 6)
        btOutput.grid(row = 4, column = 2)
        btCancel.grid(row = 4, column = 4)



        window.mainloop()

PayrollSummary()

pack()grid()place()是将窗口小部件放置在窗口(或其他窗口小部件place()中的三种方法。
如果您将grid()与某些小部件一起使用,则不要使用pack()place()

effbot.org上的文档: 网格打包放置

我删除了所有.pack()除了frame.pack()让你几乎期望什么。

在此处输入图片说明

现在,小部件需要使用sticky='w'左对齐( 'west'

在添加第二Frame我得到了

在此处输入图片说明

码:

from tkinter import *

class PayrollSummary:
    def __init__(pay):
        window = Tk()
        window.title("Employee Payroll")

        #Add Frame 1
        frame1 = Frame(window)
        frame1.pack()

        #Add ReadFile Button
        btReadFile = Button(frame1, text = "Read File")

        #Add ShowPayroll Button
        btShowPayroll = Button(frame1, text = "Show Payroll")

        #Add FindEmployee by Name Button
        btFindEmployee = Button(frame1, text = "Find Employee by Name")

        #Add Highest Radio Button
        rbHigh = Radiobutton(frame1, text = "Highest")

        #Add Lowest Radio Button
        rbLow = Radiobutton(frame1, text ="Lowest")

        #Add FindEmployee by Amount Button
        btFindEmployee_A = Button(frame1, text = "Find Employee by Amount")

        #Add WriteOutput Button
        btOutput = Button(frame1, text = "Write Output to File")

        #Add Cancel Button
        btCancel = Button(frame1, text = "Cancel")

        btReadFile.grid(row = 1, column = 2, sticky='w')
        btShowPayroll.grid(row = 2, column = 2, sticky='w')
        btFindEmployee.grid(row = 2, column = 4, sticky='w')
        rbHigh.grid(row = 3, column = 2, sticky='w')
        rbLow.grid(row = 3, column = 4, sticky='w')
        btFindEmployee_A.grid(row = 3, column = 6, sticky='w')
        btOutput.grid(row = 4, column = 2, sticky='w')
        btCancel.grid(row = 4, column = 4, sticky='w')

        #Add Frame 2
        frame2 = Frame(window, bg='red')
        frame2.pack(fill='both') # try without `fill`

        label2 = Label(frame2, text='Label in bottom Frame', bg='green')
        label2.pack()

        window.mainloop()

PayrollSummary()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM