收音机按钮和检查按钮没有出现在窗口中

时间:2014-04-01 23:47:40

标签: python user-interface tkinter

我正在编写一个程序,在顶部框架中绘制一个矩形或椭圆形,具体取决于用户是否通过单选按钮选择它。有一个检查按钮,用于确定椭圆是否也被填充。两个按钮都在底部框架上。但由于某种原因,当我运行代码时,它会显示窗口,但不显示按钮本身。我该如何解决这个问题?

这是我的代码:

from tkinter import *

class GeometricFigures:
    def __init__(self):
        self.window = Tk()
        self.window.title("Radiobuttons and Checkbuttons")
        self.canvas = Canvas(self.window, width = 300, height = 100, bg = "white")
        self.canvas.pack()

    def drawButtons(self):
        self.bottomframe = Frame(self.window)
        self.bottomframe.pack()

        self.check = IntVar()
        cbtFilled = Checkbutton(self.bottomframe, variable = self.check, value = 0,
                                text = "Filled", command =     self.processCheckbutton).pack(side = LEFT)
        self.radio = IntVar()
        rbRectangle = Radiobutton(self.bottomframe, variable = self.radio, value = 1,
                                  text = "Rectangle", command = self.processRadiobutton.pack())

        rbOval = Radiobutton(self.bottomframe, text = "Oval", variable = self.radio,
                             value = 2, command = self.processRadiobutton.pack())

        cbtFilled.grid(row = 1, column = 2)
        rbRectangle.grid(row = 1, column = 3)
        rbOval.grid(row = 1, column = 4)

    def processCheckbutton(self):
        print("The check button is " +
              ("checked " if self.check.get() == 1 else "unchecked"))
    def processRadiobutton(self):
        print(("Rectangle" if self.radio.get() == 1 else "Oval")
              + " is selected ")

    def drawRect(self):
        self.canvas.create_rectangle(30, 10, 270, 60, tags = "rect")

    def drawFillOval(self):
        self.canvas.create_oval(30, 10, 270, 60, fill = 'blue', tags = "oval")

    def drawOval(self):
        self.canvas.create_oval(30, 10, 270, 60, tags = "oval")

    def main(self):
        test = GeometricFigures()
        if self.check.get() == 1:
            test.drawFillOval()
        if self.radio.get() == 1:
            test.drawRect()
        else:
            test.drawOval()
        test.drawButtons()
if __name__ == '__main__':
    main()

谢谢!

0 个答案:

没有答案