【问题标题】:How to align the ttk widgets in your application?如何对齐应用程序中的 ttk 小部件?
【发布时间】:2021-08-24 06:57:30
【问题描述】:

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

看起来是这样的:

这是我的代码:

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, column=0)

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

mainloop()

【问题讨论】:

  • 就像我之前说的,将sticky=W 添加到ttk.Combobox 的网格中。您的列长度等于复选框的长度,但您的组合框太小

标签: python tkinter combobox ttk tkinter.checkbutton


【解决方案1】:

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

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

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

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

【讨论】:

  • “使用网格几何管理器的 Tkinter 小部件,默认情况下将由 sticky='n' 设置” - 这是不正确的。默认值为空字符串,这会导致小部件在其单元格中居中。
  • @BryanOakley 好的,谢谢你让我知道,我有相当的怀疑。它“n”看起来与普通小部件相同。
猜你喜欢
  • 2021-04-01
  • 2021-11-25
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 2017-11-01
  • 2020-08-09
  • 2019-02-18
相关资源
最近更新 更多