选中/取消选中获取复选框以创建/删除窗口

时间:2019-04-11 13:05:55

标签: python tkinter

我想要一个复选框,该复选框在选中时创建滚动的文本小部件,而在未选中时删除该小部件。

当前,仅当我选中该框然后取消选中它时,它才创建该小部件,然后再次选中时,它不执行任何操作,而当再次取消选中时,它在下面创建另一个小部件。

我尝试了不同的编码方式,但是我不知道自己在做什么错。

# Creates Normal Checkbutton
chk_state = BooleanVar()
chk_state.set(False)  # set check state
chk = Checkbutton(window, text='Normal Entries', var=chk_state)
chk.place(x=0, y=0)

#Checks Checkbutton State
def chk_checked(event):
    txt = scrolledtext.ScrolledText(window, height=15, width=35)
    if chk_state.get():
        txt.insert(END, 'Paste Normal Entries Here...')
        txt.pack(anchor='nw', padx=50, pady=50)
    elif txt.winfo_exists():
        txt.pack_forget()
    else:
        pass

#Event when checkbox checked
chk.bind('<Button-1>', chk_checked)

1 个答案:

答案 0 :(得分:2)

您可以这样尝试

develop

这不是最好的方法,也许您可​​以创建一个类,我认为这样会更好。

您的代码存在的问题是,每次您单击triggers { cron('H 21 * * 1-5') } // SKIP PIPELINE if triggered by timer AND branch not 'release/v1' OR 'develop' stages { stage('build') { when { ... } } stage('UT') { when { ... } } etc... } 函数import tkinter as tk from tkinter.scrolledtext import ScrolledText def chk_checked(): global txt if chk_state.get(): txt = ScrolledText(window, height=15, width=35) txt.insert(tk.END, 'Paste Normal Entries Here...') txt.pack(anchor='nw', padx=50, pady=50) else: txt.pack_forget() window = tk.Tk() chk_state = tk.BooleanVar() chk_state.set(False) # set check state chk = tk.Checkbutton(window, text='Normal Entries', var=chk_state, command=chk_checked) chk.place(x=0, y=0) txt = None window.mainloop() 都会创建一个新的CheckButton,然后对其进行处理,而不是在chk_checked(event)上进行操作那是以前创建的。您必须声明ScrolledText(而不是ScrolledText),才能存储要使用的global variable并只能与之一起使用