Can';用python将combobox对齐到我的网格上所需的位置

Can';用python将combobox对齐到我的网格上所需的位置,python,combobox,tkinter,Python,Combobox,Tkinter,我已经开始编写一个程序,在这个程序中,我第一次使用了组合框,现在我想把它连接到网格。然而,我的问题是,它总是在我所有小部件的最底部结束(图:)。 此外,以下是我的代码: from tkinter import * from tkinter import ttk class Application(ttk.Frame): """A application""" def __init__(self, master): Frame.__init__(self, mas

我已经开始编写一个程序,在这个程序中,我第一次使用了组合框,现在我想把它连接到网格。然而,我的问题是,它总是在我所有小部件的最底部结束(图:)。 此外,以下是我的代码:

from tkinter import *
from tkinter import ttk

class Application(ttk.Frame):
    """A application"""
    def __init__(self, master):
        Frame.__init__(self, master)
        self.grid()
        self.create_widgets()

def create_widgets(self):
    """this creates all the objects in the window"""

    self.title_lbl = ttk.Label(self,text = "Title"
                               ).grid(column = 0, row = 0,sticky = W)
    self.label = ttk.Label(self, text = "label"
                                           ).grid(column = 0,
                                                  row = 1,sticky = W)
    self.combovar = StringVar()
    self.combo = ttk.Combobox(self.master,textvariable = self.combovar,
                                              state = 'readonly')
    self.combo['values'] = ('A', 'B',
                                            'C', 'D',
                                            'E', 'F',
                                            'G', 'H', 'I')
    self.combo.current(0)
    self.combo.grid(column = 0, row = 2, sticky = W)


    self.button1 = ttk.Button(self, text = "Button1"
                              ).grid(column = 0, row = 3,sticky = W)


    self.button2 = ttk.Button(self, text = "Button 2"
                                  ).grid(column = 0, row = 4, sticky = W)




def main():
    """Loops the window"""
    root = Tk()
    root.title("Window")
    root.geometry("500x350")
    app = Application(root)
    root.mainloop()

main()
正如您希望看到的,在我的代码中,Combobx应该位于第2行,标签的正下方。相反,它位于第3行和第4行中的2个按钮下方。我不知道为什么会这样


我是Python3.3新手,但我对2.7相当熟悉。我也是新的堆栈溢出,所以请容忍我。欢迎提供任何帮助。

您正在为Combobox小部件使用不同的父级,因此它不位于框架的第三行,而是根元素的第二行(因此,位于框架的标签和按钮下方):

只需将
self
设置为父级即可解决此问题:

self.combo = ttk.Combobox(self, ...)
self.combo = ttk.Combobox(self, ...)