单选按钮和复选按钮在窗口中没有显示

2024-04-26 00:02:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这是我的密码:

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()

谢谢!你知道吗


Tags: testselfgetifvaluedefcheckwindow