如何删除某些复选框并通过一个按钮创建另一个复选框?

时间:2019-04-13 22:12:11

标签: python checkbox tkinter

我是python的新手,我试图做一个测验,其中用户选中一个复选框,然后通过按一个按钮删除那些复选框并创建其他复选框。问题是我找不到方法。

我已经尝试通过键入按钮将要运行的命令的名称,然后输入-“ .delete,.remove,.del,.destroy”。 我尝试了所有这些方法,但也许我用错了。

我不想禁用它们,因为我希望它们消失并显示为一个按钮。

from tkinter import *

#Screen
screen  = Tk()
screen.title("Prueba n° 1.000.000.000")
screen.geometry("500x250")

#Functions
def b_next():
    #I don't know what to write here

def del_cb():
    quit()


#1° Questions
c_1 = Checkbutton(text = "1° Option")
c_1.place(y = 20, x = 125)

c_2 = Checkbutton(text = "2° Option")
c_2.place(y = 40, x = 125)

c_3 = Checkbutton(text = "3° Option")
c_3.place(y = 60, x = 125)

c_4 = Checkbutton(text = "4° Option")
c_4.place(y = 80, x = 125)

c_5 = Checkbutton(text = "5° Option")
c_5.place(y = 100, x = 125)


#2° Questions
c_6 = Checkbutton(text = "6° Option")
c_6.place(y = 20, x = 125)

c_7 = Checkbutton(text = "7° Option")
c_7.place(y = 40, x = 125)

c_8 = Checkbutton(text = "8° Option")
c_8.place(y = 60, x = 125)

c_9 = Checkbutton(text = "9° Option")
c_9.place(y = 80, x = 125)

c_10 = Checkbutton(text = "10° Option")
c_10.place(y = 100, x = 125)


#Buttons
b_next = Button(text = "Siguiente Pregunta", command = b_next).place(y = 125, x = 125)

b_del = Button(text = "Borrar", command = del_cb).place(y = 155, x = 125)


screen.resizable (False, False)
screen.mainloop()

希望您能为这个小问题提供帮助!

P.D:我不太会用英语写,因此可能存在一些语法错误,对此感到抱歉!

1 个答案:

答案 0 :(得分:1)

您可以使用.pack_forget()隐藏tkinter小部件。 您可以使用.pack()使tkinter小部件重新出现。

例如隐藏“ c_9”:

c_9.pack_forget()

例如揭示“ c_9”:

c_9.pack()

要使按钮隐藏或显示诸如'c_9'之类的tkinter窗口小部件,您可以使按钮的命令成为使用.pack()或.pack_forget()来隐藏窗口小部件的子例程。


例如:

下面的按钮'b_hide_c_9'在单击时运行子程序'hide_c_9'。

子程序'hide_c_9'使用.pack_forget()隐藏'c_9':

b_hide_c_9 = Button(text = "Hide c_9", command = hide_c_9).place(y = 155, x = 125)

def hide_c_9():
    c_9.pack_forget()

例如:

点击下面的按钮'b_reveal_c_9',运行子程序'reveal_c_9'。

子程序'reveal_c_9'使用.pack_()显示'c_9':

b_reveal_c_9 = Button(text = "Reveal c_9", command = reveal_c_9).place(y = 155, x = 125)

def reveal_c_9():
    c_9.pack()