Python Tkinter 中小部件的对齐

Alignment of the widgets in Python Tkinter

我快被这个愚蠢的问题搞疯了。正如您在 运行 这个简单代码中看到的,"combobox" 小部件与其他 "entry" 小部件不一致。我哪里错了?

from tkinter import *
from tkinter import ttk

root = Tk()

frame = Frame(root)
frame.grid()

x = Label(frame, text="alpha", width = 8, anchor = W)
x.grid(row=1, columnspan=1)
x = Entry(frame,  width = 24)
x.grid(row=1, column=2, columnspan=2,  sticky=W)

x = Label(frame, text="beta", width = 8, anchor = W)
x.grid(row=2, columnspan=1)
x = Entry(frame,  width = 24)
x.grid(row=2, column=2, columnspan=2,  sticky=W)

x = Label(frame, text="gamma", width = 8, anchor = W)
x.grid(row=3, columnspan=1)
x = Entry(frame, width = 7, justify = 'center')
x.grid(row=3, column=2, columnspan=1, sticky=W)
#x = ttk.Combobox(frame, width = 4, justify = "center")
#x.grid(row=3, column=3, columnspan=1, sticky=W)

x = Label(frame, text="delta", width = 8, anchor = W)
x.grid(row=4, columnspan=1)
x = ttk.Combobox(frame, width=20)
x.grid(row=4, column=2, columnspan=2,  sticky=W)

x = Label(frame, text="epsilon", width = 8, anchor = W)
x.grid(row=5, columnspan=1)
x = Entry(frame,  width = 24)
x.grid(row=5, column=2, columnspan=2,  sticky=W)

mainloop()

不确定为什么要这样做。它在 Windows 和 Linux 上的显示不同。从来没有那个问题。你可以做的是在组合框网格语句中,当检测到Linux安装时添加padx=1,如果Windows,如果你需要多-平台兼容性。我知道这是一种解决方法,但两个系统的基本 GUI 行为不同。

import platform
from tkinter import *
from tkinter import ttk

os_info = platform.platform()
....

if os_info.startswith('Linux'):
    x.grid(row=3, column=2, columnspan=1, sticky=W, padx=1)
elif os_info.startswith('Windows'):
    x.grid(row=3, column=2, columnspan=1, sticky=W)
...