【问题标题】:Tkinter align Grid placeTkinter 对齐网格位置
【发布时间】:2021-05-02 14:56:44
【问题描述】:

我用 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()

谢谢你,

【问题讨论】:

    标签: python user-interface tkinter grid


    【解决方案1】:

    它们没有排成一行,因为您为它们指定了所有不同的值 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 .. 
    

    【讨论】:

    • 这也有帮助。您将所有对grid 的调用组合在一起,而不是将它们分散在整个代码中。这样可以更轻松地可视化代码正在执行的操作。
    • 你好小说,完美!谢谢你的帮助
    猜你喜欢
    • 2020-03-13
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2014-04-28
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多