微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在您的应用程序中对齐 ttk 小部件?

如何解决如何在您的应用程序中对齐 ttk 小部件?

我有一个 tkinter 应用程序,其中包含 1 个 CheckButton 和 2 个 ComboBoxes。但是,CheckButton 似乎与 ComboBoxes 不在同一行开始,反之亦然。我已将它们都放在 column=1 中,但即使这样似乎也无法解决问题。

它是这样的:

enter image description here

这是我的代码

from tkinter import *
from tkinter import ttk
    
owner = ['Spain','United Kingdom','Malaysia']
vehicleid = ['C161','C162']
equipment = ['X-tron senistra beamer mode version 5.4433','Loadcell compact designer 2000 version 32.44','Streamcell highspeed collision extra large version 8.5']

window = Tk()
window.title("Running Python Script") # Create window
window.geometry('550x300') # Geo of the window

##These are the option menus
w = ttk.ComboBox(window,values=owner)
w.current(0)
w.grid(row=1,column=1)

w0 = ttk.ComboBox(window,values=vehicleid)
w0.current(0)
w0.grid(row=0,column=1)

for i,x in enumerate(equipment):
    dd_equipment = Checkbutton(window,text=x,variable=x)
    dd_equipment.grid(row=2+i,column=1,sticky=W)
    if i == 0 or i == 1:
        dd_equipment.toggle()

##The run button 
run_list_button =ttk.Button(window,text="Send data of ID's to database!")
run_list_button.grid(column=0,row=5)

##These are the titles
l1 = ttk.Label(window,text='Select Owner',width=15)
l1.grid(row=1,column=0)

l0 = Label(window,text='Select vehicle id:',width = 30)
l0.grid(row=0,text='Select equipment:',width = 30)
l0.grid(row=2,column=0)

mainloop()

解决方法

使用 grid 几何管理器的 Tkinter 小部件默认由 sticky='' 设置,这样它就会位于列的单元格的中间。并且列宽将是该列中宽度最大的小部件的宽度(默认情况下)。因此,如果您想对齐某些小部件,请在所有必需的小部件上使用 stick='w' 或任何其他侧。或 sticky='news' 使其完全填充单元格。

w .grid(row=1,column=1,sticky='w')

w0.grid(row=0,sticky='w')

然而,我在 tkinter 管理/安排小部件的方式上并不是那么多产,上述结论纯粹是从推理中得出的。所以如果我错了,请随时纠正我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。