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 ..
我用 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 ..