Tkinter网格对齐问题

时间:2017-01-24 11:41:05

标签: python user-interface tkinter

我对tkinter很新,我无法理解为什么q在Entry附近没有对齐。

# String
self.user_p = StringVar()
self.user_q = StringVar()
self.user_r = StringVar()
self.user_result = StringVar()

# Label
self.description = Label(self.root, text="!p v (q ^ r)")
self.pLabel = Label(self.root, text="p")
self.qLabel = Label(self.root, text="q")
self.rLabel = Label(self.root, text="r")
self.resultLabel = Label(self.root, text="Result")

# Entry
self.p = Entry(self.root, textvariable = self.user_p, width = 10)
self.q = Entry(self.root, textvariable = self.user_q, width = 10)
self.r = Entry(self.root, textvariable = self.user_r, width = 10)
self.result = Entry(self.root, bg = "white", state=DISABLED, text = "")

# Grid
  # Labels
self.description.grid(row = 0, column = 3, sticky = N)
self.pLabel.grid(row = 1, column = 0, sticky = E)
self.qLabel.grid(row = 1, column = 2, sticky = E)
self.rLabel.grid(row = 1, column = 4, sticky = E)

  # Entry
self.p.grid(row=1, column=1)
self.q.grid(row = 1, column = 3)
self.r.grid(row=1, column=5)

(有或没有粘性它仍然是相同的)

这是一张图片:http://imgur.com/a/wrOGa

图中的第一部分是我现在所得到的。第二部分是我希望它看起来像

我做错了吗?

1 个答案:

答案 0 :(得分:0)

欢迎。我冒昧地附上测试代码的例子(见下文)。请记住在你的帖子中这样做,因为我的可能与你的不同。我没有遇到你描述的问题。见附图。我在Ubuntu 16.04上使用python3.5。

另一件事是,您可以通过在标签小部件命令中添加选项justify=RIGHT来更明确地将标签文本向右下方。

result

from tkinter import *

class App(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent, background='pink')

        # String
        self.user_p = StringVar()
        self.user_q = StringVar()
        self.user_r = StringVar()
        self.user_result = StringVar()

        # Label
        self.description = Label(self, text="!p v (q ^ r)")
        self.pLabel = Label(self, text="p")
        self.qLabel = Label(self, text="q")
        self.rLabel = Label(self, text="r")
        self.resultLabel = Label(self, text="Result")

        # Entry
        self.p=Entry(self, textvariable=self.user_p, width=10)
        self.q=Entry(self, textvariable=self.user_q, width=10)
        self.r=Entry(self, textvariable=self.user_r, width=10)
        self.result=Entry(self, bg="white", state=DISABLED, text="")

        # Grid
          # Labels
        self.description.grid(row=0, column=3, sticky=N)
        self.pLabel.grid(row=1, column=0, sticky=E)
        self.qLabel.grid(row=1, column=2, sticky=E)
        self.rLabel.grid(row=1, column=4, sticky=E)

          # Entry
        self.p.grid(row=1, column=1)
        self.q.grid(row=1, column=3)
        self.r.grid(row=1, column=5)

if __name__ == '__main__':
    root=Tk()
    root.geometry("300x50")
    app=App(root)
    app.pack(fill="both", expand=True)
    app.mainloop()