有人能解释并帮助我理解Tkinter中小部件的格式是如何工作的吗

有人能解释并帮助我理解Tkinter中小部件的格式是如何工作的吗,tkinter,formatting,label,frames,Tkinter,Formatting,Label,Frames,我只是在玩Tkinter,试图创建一个基本的名字输入系统。我很难掌握一些事情: 为什么无论我在哪里尝试网格化标签,它总是保持在左上角?我如何获得它,以便我可以“自由地”在窗口周围放置标签,而不是将其保持在固定位置 我基本了解: root.grid_rowconfigure(0, weight=1) root.grid_columnconfigure(0, weight=1) 然而,不同的参数意味着什么,改变它们对程序有什么实际作用 有没有办法让文本进入窗口的顶部中心,并确保它保持在那

我只是在玩Tkinter,试图创建一个基本的名字输入系统。我很难掌握一些事情:

  • 为什么无论我在哪里尝试网格化标签,它总是保持在左上角?我如何获得它,以便我可以“自由地”在窗口周围放置标签,而不是将其保持在固定位置
  • 我基本了解:

    root.grid_rowconfigure(0, weight=1)
    
    root.grid_columnconfigure(0, weight=1)
    
然而,不同的参数意味着什么,改变它们对程序有什么实际作用

  • 有没有办法让文本进入窗口的顶部中心,并确保它保持在那里,有点像实际窗口中的标题位。我知道这可以通过填充来实现,但是如果窗口大小改变,填充不允许文本保持居中
如果有人能向我解释这些,甚至是一个,那将是一个很大的帮助。谢谢:)


如果我是你,我就不会使用
.grid()
。改用
.place()
。使用此几何体管理器,您可以将小部件几乎放置在屏幕上的任何位置,并且它还具有在屏幕缩小时缩小的附加优势。例如:

button1=按钮()
按钮1.放置(relx=0.5,rely=0.5,anchor=“center”)
<>这将把按钮放在屏幕中间,不管你缩小屏幕多少。 阅读更多关于

希望这有帮助


此外,pack和grid不能在同一个主控中协同工作,因为程序将永远尝试找到一个对两个几何体管理器都有效的解决方案。确保如果你使用网格,那么坚持使用它

如果我是你,我就不会使用
.grid()
。改用
.place()
。使用此几何体管理器,您可以将小部件几乎放置在屏幕上的任何位置,并且它还具有在屏幕缩小时缩小的附加优势。例如:

button1=按钮()
按钮1.放置(relx=0.5,rely=0.5,anchor=“center”)
<>这将把按钮放在屏幕中间,不管你缩小屏幕多少。 阅读更多关于

希望这有帮助

此外,pack和grid不能在同一个主控中协同工作,因为程序将永远尝试找到一个对两个几何体管理器都有效的解决方案。确保如果你使用网格,那么坚持使用它

为什么无论我在哪里尝试网格化标签,它总是保持在左上角

这是因为空行和空列的大小为零

我如何获得它,以便我可以“自由地”在窗口周围放置标签,而不是将其保持在固定位置

要“自由定位”小部件,您可以使用
place
。它擅长于让你把小部件放在你想要的地方。缺点是,您必须进行所有计算,并注意在调整窗口大小、字体不同等情况下会发生什么。
place
有利于绝对定位(甚至相对定位),但通常会导致您不得不做更多工作,最终导致UI响应性较差

我对
root.grid\u rowconfigure(0,weight=1)
有基本的了解。。。然而,不同的参数意味着什么,改变它们对程序有什么实际作用

第一个参数是要配置的行或列编号。
weight
参数是一个相对数,告诉tkinter如何相对于其他行和列分配额外的空间。如果有未分配的空间,它将以非零权重分布在行和列之间

例如,如果一列的权重为2,另一列的权重为1,则权重为2的列将获得两倍的额外空间。如果权重为20和10或2000和1000,情况也是如此

有没有办法让文本进入窗口的顶部中心,并确保它保持在那里

有几种方法,但是如果在整个窗口中只有一个标签,那么在顶部有一个标签,而在下面有其他东西,那么答案就不同了。使用网格,您必须考虑所有行和列的行为。你的问题没有标题,所以很难给出具体的建议

为什么无论我在哪里尝试网格化标签,它总是保持在左上角

这是因为空行和空列的大小为零

我如何获得它,以便我可以“自由地”在窗口周围放置标签,而不是将其保持在固定位置

要“自由定位”小部件,您可以使用
place
。它擅长于让你把小部件放在你想要的地方。缺点是,您必须进行所有计算,并注意在调整窗口大小、字体不同等情况下会发生什么。
place
有利于绝对定位(甚至相对定位),但通常会导致您不得不做更多工作,最终导致UI响应性较差

我对
root.grid\u rowconfigure(0,weight=1)
有基本的了解。。。然而,不同的参数意味着什么,改变它们对程序有什么实际作用

第一个参数是要配置的行或列编号。
weight
参数是一个相对数,告诉tkinter如何相对于其他行和列分配额外的空间。如果有未分配的空间,它将以非零权重分布在行和列之间

例如,如果一列的权重为2,另一列的权重为1,则权重为2的列将获得两倍的额外空间。如果权重为20和10或2000和1000,情况也是如此

有没有办法让文本进入窗口的顶部中心并确保
    from tkinter import *

    fname = open("fname.txt", "a")


    root = Tk()
    root.title("First Name")
    root.geometry("500x300")

    main_frame = Frame(root, bg="#CECECE", width=490, height=245)

    root.grid_rowconfigure(0, weight=1)
    root.grid_columnconfigure(0, weight=1)

    main_frame.grid(row=0, sticky="nsew")

    firstName = Label(main_frame, text="First Name")
    firstName.grid(column=2, row=2)

    root.mainloop()