Tkinter добавление вкладок подталкивает все вправо - PullRequest
1 голос
/ 06 февраля 2020

Каждый раз, когда я добавляю новую вкладку, мои метки, поля ввода и т. Д. c ... сдвигаются вправо См. Пример здесь . Я пробовал разные строки и столбцы для вкладок, а также для полей метки и ввода без успеха. Я не могу найти решение, используя grid () вместо pack ().

import tkinter as tk
from tkinter import ttk


class Main:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title(" EXAMPLE ")
        self.root.geometry("220x290-1200-400")
        self.tabControl = ttk.Notebook(self.root)


        self.tab1 = ttk.Frame(self.tabControl)
        self.tabControl.add(self.tab1, text=" Tab 1 ")

        self.tab2 = ttk.Frame(self.tabControl)
        self.tabControl.add(self.tab2, text=" Tab 2 ")

        self.tab3 = ttk.Frame(self.tabControl)
        self.tabControl.add(self.tab3, text=" Tab 3 ")

        self.tab4 = ttk.Frame(self.tabControl)
        self.tabControl.add(self.tab4, text=" Tab 4 ")


        self.tabControl.grid()


        self.label = tk.Label(self.root, text = "blah blah")
        self.label.grid(row=1, column=0, sticky="E")

        self.text = tk.Entry(self.root)
        self.text.grid(row=1, column=1, sticky="W")

        self.root.mainloop()

Main()

1 Ответ

0 голосов
/ 06 февраля 2020

Записная книжка находится в нулевом столбце. self.label также находится в столбце 0. Ширина столбца сверху вниз. Поскольку self.label имеет sticky="E", он придерживается правой части первого столбца.

При добавлении вкладок виджет ноутбука становится шире, а столбец - шире. Когда столбец увеличивается, правый край перемещается дальше вправо.

Виджет записи находится в столбце 1, что по определению означает, что он находится справа от столбца 0.

Если вы хотите метку и чтобы виджет ввода был вместе и выровнен вдоль левой стороны окна и под вкладками блокнота, я рекомендую создать фрейм, который можно поместить в столбец 0 прямо под блокнотом. Затем поместите метку и запись в рамку, используя pack или grid.

...