Как центрировать виджет tkinter, игнорируя другой виджет? - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть три виджета в tkinter с Python 3. Одна картинка (как метка) и две метки. Я хочу, чтобы изображение находилось слева от рамки. Затем я хочу, чтобы две метки были центрированы по оси X, в основном игнорируя изображение, а затем центрируясь. Первая метка должна быть выше второй метки. Как мне этого добиться? Я уже давно пытаюсь и просто не могу игнорировать картинку.

РЕДАКТИРОВАТЬ: Благодаря DerrickTSE (не саркастический), я могу объяснить это немного лучше. Я сделал графический интерфейс, чтобы он выглядел так:

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

Там, где метка 1 и метка 2 расположены по центру.

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Не уверен, что именно вы хотите организовать свой интерфейс. Итак, я предполагаю, что вы хотите достичь чего-то вроде этого:

-----------
|         |  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

Надеюсь, это поможет, ура.

0 голосов
/ 30 апреля 2019

Вы ищете что-то подобное?Окно может расшириться, и ярлыки окажутся в центре.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...