【问题标题】:Labels appearing over Entry's in Tkinter标签出现在 Tkinter 中的条目上
【发布时间】:2014-01-07 01:26:45
【问题描述】:

当我运行以下代码时,创建的标签出现在条目框的顶部,就好像它们没有被添加到同一个网格中一样。

class Application(Frame):
    def __init__(self,master):
        super(Application,self).__init__(master)
        self.grid()
        self.new_intervals()

    def new_intervals(self):
        self.int_label = Label(text="Interval Name")
        self.int_label.grid(row=0, column=0,sticky=W)
        self.int_time_label = Label(text="Time (HH:MM:SS)")
        self.int_time_label.grid(row=0, column=1,sticky=W)
        self.box1 = Entry(self)
        self.box1.grid(row=1,column=0,sticky=W)
        self.box2 = Entry(self)
        self.box2.grid(row=1,column=1,sticky=W)
        self.box3 = Entry(self)
        self.box3.grid(row=2,column=0,sticky=W)
        self.box4 = Entry(self)
        self.box4.grid(row=2,column=1,sticky=W)


root = Tk()
root.title("Interval Timer")
root.geometry("400x500")
app=Application(root)
root.mainloop() 

我知道我可以在循环中添加这些框,但是,如果没有循环,我现在无法让它工作

【问题讨论】:

    标签: python tkinter label tkinter-entry


    【解决方案1】:
    • 应用程序框架位于主窗口的第 0 行第 0 列。当您不指定任何内容时,这是默认设置。同样默认情况下,它们出现在中间
    • 此框架有四个条目小部件,分布在两行中,使框架变大以适应这些条目小部件
    • “间隔名称”标签也被放置在主窗口的第 0 行第 0 列,因为这是您明确告诉它执行的操作,并且因为它的父窗口是主窗口。
    • “时间”标签也在主窗口的第 0 行,因为它的父窗口也是主窗口
    • 这两个标签都出现在行的垂直中心,因为这是您尚未覆盖的默认行为,这就是它们出现在条目小部件顶部的原因。

    因此,由于标签和应用程序框架位于主窗口的同一行,并且由于标签默认位于垂直中心,因此它们似乎位于条目小部件的中间。

    我假设您打算将标签作为框架的子级,因此您需要在创建它们时将“self”指定为第一个参数:

    self.int_label = Label(self, text="Interval Name")
    ...
    self.int_time_label = Label(self, text="Time (HH:MM:SS)")
    

    我还建议将特定主窗口的所有网格语句组合在一起,以便更轻松地查看小部件的组织。以我的经验,这使代码更易于阅读和维护。

    例如:

    self.int_label = Label(...)
    self.int_time_label = Label(...)
    self.box1 = Entry(...)
    ...
    self.int_label.grid(...)
    self.int_time_label.grid(...)
    self.box1.grid(...)
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-10
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      相关资源
      最近更新 更多