在Python tkinter

时间:2016-01-28 01:43:41

标签: python class tkinter

在下面的例子中,我试图在MainW()中使用Frame1()。我尝试了以下代码的许多变体。问题是框​​架对象颜色和行距根本没有变化。我知道在MainW()中使用Frame1()存在问题。有人可以指出错误吗?

from tkinter import *

class Frame1(Frame):
        def __init__(self, parent):
            Frame.__init__(self, parent, bg="red")
            self.parent = parent
            self.widgets()
        def widgets(self):
            self.text = Text(self)
            self.text.insert(INSERT, "Hello World\t")
            self.text.insert(END, "This is the first frame")
            self.text.grid(row=0, column=0)


class MainW(Tk):
    def __init__(self, parent):
        Tk.__init__(self, parent)
        self.parent = parent
        self.mainWidgets()
    def mainWidgets(self):
        self.label = Label(self, text="Main window label")
        self.label.grid(row=0, column=0)
        self.window = Frame1(self)
        self.window.grid(row=0, column=10, rowspan=2)

if __name__=="__main__":
    app = MainW(None)
    app.mainloop()

这是输出,这不是我想要的。我需要框架的背景红色和行距为1: enter image description here

谢谢

1 个答案:

答案 0 :(得分:2)

您无法看到框架颜色,因为您放置了填充所有框架的窗口小部件。

如果您添加边距(let aBunchOfNumbers = [1,2,3,4,5,6,7,8,9,10] let reverseSortClosure: (Int, Int) -> Bool = { (numberOne: Int, numberTwo: Int) -> Bool in if numberOne < numberTwo { return true } return false } aBunchOfNumbers.sorted(by: reverseSortClosure) padx),则可以看到边框颜色。

pady

您无法看到self.text.grid(row=0, column=0, padx=20, pady=20) ,因为您的空rowspan是第二行。空单元格没有宽度和高度。在第二行添加标签,将会看到cell的工作原理。

rowspan

enter image description here