Tkinter小部件放置不正确

时间:2017-06-13 15:03:49

标签: python tkinter

我想用

创建一个框架
  • 组合框
  • 然后是两个标签
  • 然后是另一个组合框。

相反,我得到一个带

的框架
  • 两个组合框
  • 然后是两个标签

Tkinter小部件似乎按小部件类型分组。请告知如何正确放置小部件。谢谢!

我在Win 7 64位和Tcl / Tk版本8.6上使用Python 3.4。

import tkinter as tk
from tkinter import ttk

class App(tk.Frame):
    def __init__(self,master=None):
        super().__init__(master)
        self.grid()

        self.combo1=ttk.Combobox(self)
        self.combo1["values"]=["1","2"]
        self.combo1.grid(row=1)

        self.lbl1=ttk.Label(text="AAA")
        self.lbl1.grid(row=2)

        self.lbl3=ttk.Label(text="BBB")
        self.lbl3.grid(row=3)

        self.combo2=ttk.Combobox(self)
        self.combo2["values"]=["3","4"]
        self.combo2.grid(row=4)

root=tk.Tk()
x=App()

incorrect layout

1 个答案:

答案 0 :(得分:4)

之所以发生这种情况,是因为您没有将Labels的父级设置为self(框架),请尝试将标签更改为:

self.lbl1=ttk.Label(self, text="AAA")
...

self.lbl3=ttk.Label(self, text="BBB")

之前他们使用的是默认父级root,因此它们显示在您的框架下方。