如何居中tkinter小部件,而忽略另一个小部件?

时间:2019-04-30 09:45:51

标签: python python-3.x tkinter

在tkinter和Python 3中,我有三个小部件。一张图片(作为标签)和两个标签。我希望图片一直在框的左侧。然后,我希望两个标签在X轴上居中,基本上忽略图片,然后居中。第一个标签需要高于第二个标签。我该如何实现?我已经尝试了很长时间,但无法忽略图片。

编辑:感谢DerrickTSE(不是讽刺的),我可以更好地解释它。我确实提到了GUI看起来像这样:

-----------
|         |                             Label 1
|   Pic   |                             -------
|         |                             Label 2
-----------

将标签1和标签2居中的位置。

2 个答案:

答案 0 :(得分:1)

不确定要组织UI的确切位置。因此,我假设您想实现以下目标:

-----------
|         |  Label 1
|   Pic   |  -------
|         |  Label 2
-----------

然后,您可以使用grid属性来组织窗口小部件。要实现,可以在方法rowspan中调用.grid()来扩展特定单元格。因此,简短的代码应如下所示:

pic = tk.Label(frame,...)
pic.grid(column = 0, rowspan = 2) # extend the cell by 2 rows

Label1 = tk.Label(frame,...)
Label1.grid(column = 1, row = 0)

Label2 = tk.Label(frame,...)
Label2.grid(column = 1, row = 1)

有关tkinter网格的更多说明:Doc

希望这会有所帮助,欢呼起来。

答案 1 :(得分:0)

您是否正在寻找类似的东西?窗口可以扩展,标签将位于中心。

import tkinter as tk

root = tk.Tk()

pic = """
-----------
|         |
|   Pic   |
|         |
-----------
"""

p = tk.Label(root,text=pic,font="Consolas 8")
p.pack(side="left")

f = tk.Frame(root)

tk.Label(f,text="Label 1").pack()
tk.Label(f,text="-------").pack()
tk.Label(f,text="Label 2").pack()

f.pack(side="left",expand=True)

root.mainloop()