Tkinter 对齐网格位置

Tkinter align Grid place

我用 Tkinter 创建了这个小 GUI。但我想让我的按钮 'StartDate' 和按钮 '...' 以及我的 Combobox 与我的 Entry 对象对齐。我试图用 pack() 找到一个解决方案,但它并不好。

你有什么想法吗?

    import tkinter as tk
    from tkinter import ttk
    from tkcalendar import Calendar
    from tkinter.messagebox import *
    from tkinter import filedialog
    from tkinter import *
    from ttkthemes import ThemedTk

    #------------------------------------ Configuration Tkinter ------------------------#
    #Conf General
    app = tk.Tk() 
    style = ttk.Style(app)
    style.theme_use('clam')
    app.geometry("320x260")
    app.eval('tk::PlaceWindow . center')
    app.attributes("-topmost", True)
    app.configure(background='#f4f4f4')
    #------------------------------------ Object Tkinter -------------------------------#
    #Code Alto
    selectalto = tk.Label(app,text = "Select Alto Code",bg='#f4f4f4')
    selectalto.grid(column=0, row=0, ipadx=5, pady=5, sticky=tk.W+tk.N)
    selectalto_entry = Entry(app)
    selectalto_entry.grid(column=1, row=0, ipadx=5, pady=5, sticky=tk.W+tk.N)
    #Code PTF
    importCode = tk.Label(app,text = "Import Decalog Code",bg='#f4f4f4')
    importCode.grid(column=0, row=1, ipadx=5, pady=5, sticky=tk.W+tk.N)
    browsebutton = tk.Button(app,text='...', bd = 0)
    browsebutton.grid(column=1, row=1, padx=10, pady=5, sticky=tk.N)
    #Date
    date_text = tk.Label(app,text = "Select Start Date",bg='#f4f4f4')
    date_text.grid(column=0, row=2, ipadx=5, pady=5, sticky=tk.W+tk.N)
    ttk.Button(app, text='Start Date').grid(column=1, row=2, padx=10, pady=5, sticky=tk.W+tk.N)
    #Views
    selectviews = tk.Label(app,text = "Select Views",bg='#f4f4f4')
    selectviews.grid(column=0, row=3, ipadx=5, pady=5, sticky=tk.W+tk.N)
    selectviews_entry = Entry(app, bd =1)
    selectviews_entry.grid(column=1, row=3, ipadx=5, pady=5, sticky=tk.W+tk.N)
    #Output
    selectouput = tk.Label(app,text = "Format Output",bg='#f4f4f4')
    selectouput.grid(column=0, row=4, ipadx=5, pady=5, sticky=tk.W+tk.N)
    n = tk.StringVar() 
    selectouput_value = ttk.Combobox(app, textvariable =n)
    selectouput_value.grid(column=1, row=4, padx=5, pady=5, sticky="NW")
    selectouput_value['values'] = ['.csv', '.xlsx', '.txt', '.json']
    #BarProgress
    style = ttk.Style()
    style.theme_use('clam')
    style.configure("blue.Horizontal.TProgressbar",foreground='#003c64', background='#003c64')
    my_progress = ttk.Progressbar(app,orient="horizontal",length=300,mode="determinate", style="blue.Horizontal.TProgressbar")
    my_progress.grid(columnspan = 2, row=6, padx=10, pady=5, sticky=tk.N)
    my_progress['maximum'] = 100
    #Extraction
    ttk.Button(app, text='Extraction').grid(columnspan = 2, row=5, padx=10, pady=5, sticky=tk.N)


    app.mainloop()

加油,

他们没有排成一行,因为你给了他们所有不同的 sticky、pad 和 ipad 值。确保它们都获得相同值的一种方法是在单个字典中定义它并让它们都使用该字典,如下所示:

layout = dict(ipadx=5,pady=5, sticky=tk.W)
#Code Alto
selectalto = tk.Label(app,text = "Select Alto Code",bg='#f4f4f4')
selectalto.grid(column=0, row=0, ipadx=5, pady=5, sticky=tk.W+tk.N)
selectalto_entry = Entry(app)
selectalto_entry.grid(column=1, row=0, **layout)
#Code PTF
importCode = tk.Label(app,text = "Import Decalog Code",bg='#f4f4f4')
importCode.grid(column=0, row=1, ipadx=5, pady=5, sticky=tk.W+tk.N)
browsebutton = tk.Button(app,text='...', bd = 0)
browsebutton.grid(column=1, row=1, **layout)
# etc ..