Python 在Tkinter GUI中排列小部件

Python 在Tkinter GUI中排列小部件,python,graphics,tkinter,Python,Graphics,Tkinter,我一直在尝试为我正在制作的definition tester程序创建一个小型GUI。我的GUI需要如下所示: Word: # label, then entry widget Definition: # label, entry widget Part of Speech: # label, then entry widget Go Quit # each are buttons 这就是我到目前为止所做的: from Tkinter import * class GetWord: d

我一直在尝试为我正在制作的definition tester程序创建一个小型GUI。我的GUI需要如下所示:

Word: # label, then entry widget
Definition: # label, entry widget
Part of Speech: # label, then entry widget
Go Quit # each are buttons
这就是我到目前为止所做的:

from Tkinter import *

class GetWord:
    def __init__(self, master):
        self.frame = Frame(master)
        self.frame.pack()
        self.wordL = Label(self.frame, text = 'Word: ')
        self.wordL.pack(side = 'left')
        self.wordE = Entry(self.frame)
        self.wordE.pack(side = 'right', after=self.wordL)
        self.defL = Label(self.frame, text = 'Definitions: ')
        self.defL.pack(side = 'left', after=self.wordE)
        self.defE = Entry(self.frame)
        self.defE.pack(side = 'right', after=self.defL)
        self.posL = Label(self.frame, text = 'Part of Speech: ')
        self.posL.pack(side = 'left', after=self.defE)
        self.posE = Entry(self.frame)
        self.posE.pack(side = 'right', after=self.posL)
        self.buttonE = Button(self.frame, text = 'Go', command = self.getInfo)
        self.buttonE.pack(side='bottom', after=self.posE)
        self.quitB = Button(self.frame, text = 'Quit', fg = 'red', command = self.frame.quit)
        self.quitB.pack(side='bottom', after=self.buttonE)
    def getInfo(self):
        print self.wordE.get(), self.defE.get(), self.posE.get()

root = Tk()
f = GetWord(root)
root.mainloop()
然而,他们没有排队。如何将它们关联为一行(一个标签,每行一个条目,最后一行带有两个按钮)/

另外,我不确定这部分是如何工作的:

root = Tk()
f = GetWord(root)
root.mainloop()

root
没有直接引用
GetWord
类,所以我不知道它是如何工作的。如果有人能给我解释一下,那就太好了。谢谢

为此,必须用
网格
替换
包装
。使用
grid
时,必须先命名小部件(例如)
f=Label(#info)
。然后,设置
网格
,它类似于pack,但允许更多的控制<代码>f.grid(行=1,列=1,粘性=W)。若要了解有关
网格的更多信息,请查看此处:

若要执行此操作,您必须将
pack
替换为
grid
。使用
grid
时,必须先命名小部件(例如)
f=Label(#info)
。然后,设置
网格
,它类似于pack,但允许更多的控制<代码>f.grid(行=1,列=1,粘性=W)
。要了解有关网格的更多信息,请查看此处:

至于第二部分,
root
确实访问了
GetWord
root=Tk()
将root设置为Tkinter窗口。通过说
f=GetWord(root)
,您将主窗口设置为
root
,这意味着对
f
所做的任何操作都在名为
root
的窗口中。然后,
GetWord
执行它的
\uuuu init\uuuu
方法
root.mainloop()
告诉窗口运行并等待主窗口中所需的任何更改(如识别按钮按下或其他事件)。没有这一点,窗口将不会做任何事情

至于第二部分,
root
确实访问了
GetWord
root=Tk()
将root设置为Tkinter窗口。通过说
f=GetWord(root)
,您将主窗口设置为
root
,这意味着对
f
所做的任何操作都在名为
root
的窗口中。然后,
GetWord
执行它的
\uuuu init\uuuu
方法
root.mainloop()
告诉窗口运行并等待主窗口中所需的任何更改(如识别按钮按下或其他事件)。没有这一点,窗口将不会做任何事情

谢谢!我也在这个问题上添加了你的第二个答案。@F3AR3DLEGEND很高兴我能帮上忙。除了pack和grid,还有第三个选项,叫做place,但我还没有使用它,因为a)我不需要它,b)grid按照我的意愿做任何事情,有组织的hanks!我也在这个问题上添加了你的第二个答案。@F3AR3DLEGEND很高兴我能帮上忙。除了pack和grid之外,还有第三个选项,叫做place,但我还没有使用它,因为a)我不需要它,b)grid按照我想要的方式组织一切