【问题标题】:How can I place a label of top of this frame? Tkinter如何在此框架顶部放置标签?特金特
【发布时间】:2020-10-04 12:06:19
【问题描述】:

我正在尝试在框架顶部放置一个标签,该框架位于“笔记本”选项卡内。

但是当我运行这段代码时,标签总是在框架的中心结束。

from tkinter import *
from tkinter import ttk

class Window:
    def __init__(self,master):
        self.master = master
        master.title("Title")
        master.resizable(1,1)
        master.geometry('500x400')

        self.load_UI()

    def load_UI(self):

        self.tabOptions = ttk.Notebook(self.master )
        self.tab1 = Frame(self.tabOptions, padx=130, pady=80, bg='white')

        self.tabOptions.add(self.tab1, text="Add Files")    
        self.tabOptions_AddFile()

        self.tabOptions.pack()

    def tabOptions_AddFile(self):

        self.label = Label(self.tab1, text="Why is this in the center of the frame?")
        self.label.grid(row=0, column=0)

root = Tk()
app = Window(root)
root.mainloop()

我尝试使用:pack()、grid()、place() 来放置标签。我还尝试在将框架添加到笔记本之前放置标签,但它看起来仍然相同:(

我正在使用 python 3 顺便说一句。

【问题讨论】:

  • 由于您没有让笔记本填充根窗口的可用空间,它只会调整自己的大小以适应所有子窗口,即框架self.tab1 和顶部的选项卡。尝试将self.tabOptions.pack() 更改为self.tabOptions.pack(fill='both', expand=1)

标签: python python-3.x user-interface tkinter tkinter-layout


【解决方案1】:

这是因为您的Frame 填充在self.tab1 = Frame(self.tabOptions, padx=130, pady=80, bg='white') 行中。您的Frame 在这里:

只需删除 padx=130, pady=80 即可。但是要保持tabOptions的大小,替换

self.tabOptions.pack()

通过

self.tabOptions.pack(fill=BOTH, expand=True)

【讨论】:

  • 如此简单的修复!谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
  • 2021-08-11
  • 2014-10-13
  • 2014-02-04
相关资源
最近更新 更多