【问题标题】:Tkinter adding tabs pushes everything to the rightTkinter 添加选项卡将所有内容推到右侧
【发布时间】:2020-05-22 01:27:06
【问题描述】:

每次我添加一个新标签时,我的标签、输入字段等...都会被推到右侧See exmaple here。我为选项卡以及标签和输入字段尝试了不同的行和列位置,但没有成功。我找不到使用 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()

【问题讨论】:

  • 因为你把self.tabControl放到了第0行第0列,所以当self.tabControl展开时,第1列的所有内容都会被推到右边。使用columnspan 选项,例如self.tabControl.grid(columnspan=2)。调整数字以适合您的情况。

标签: python tkinter tabs move shift


【解决方案1】:

笔记本在第 0 列。 self.label 也在第 0 列。一列从上到下的宽度相同。因为self.labelsticky="E",所以它贴在第一列的右侧。

当您添加选项卡时,它会使笔记本小部件变宽,从而强制列变宽。当列增长时,右边缘进一步向右移动。

条目小部件位于第 1 列,根据定义,它位于第 0 列的右侧。

如果您希望标签和条目小部件放在一起,并沿窗口左侧和笔记本选项卡下方对齐,我建议您创建一个框架,您可以将其放在笔记本正下方的第 0 列中。然后,使用packgrid 将标签和条目放入框架中。

【讨论】:

    猜你喜欢
    • 2017-06-13
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多