我如何在tkinter的复选按钮上使用'if'。 (python 3.8)

时间:2019-12-23 12:18:39

标签: python tkinter

我创建了一个名为btn3的新按钮,该按钮旨在执行命令checkbox1。但是'if'命令需要知道复选按钮的状态。你是怎样做的。它说没有称为onvalue的属性。我检查了其他与此类似的stackoverflow问题,但是它们没有回答我的问题或不起作用。

from tkinter import *
import tkinter.messagebox

window = Tk()
window.title("Anti Bullying App")
window.geometry("555x100")

def checkbox1():
    if c1.onvalue == 1:
        tkinter.messagebox.showinfo("Error", "Report It!", icon = "warning")

ayb = Label(window, text = "                 Are you being bullied?         ", font = "Ariel 20   bold")
ayb.grid()

var1 = IntVar()
var2 = IntVar()

c1 = Checkbutton(window, text='Yes', font = "10",variable=var1, onvalue=1, offvalue=0)
c1.grid()
c2 = Checkbutton(window, text='No', font = "10",variable=var2, onvalue=1, offvalue=0)
c2.grid(row = 1, column = 2)
btn3 = Button(window, text = "submit", command = checkbox1)

1 个答案:

答案 0 :(得分:1)

您可以在此处执行一些操作,但是最可能的选择是在get()上使用IntVar()

不过,您需要做一些清理工作。

看看下面的内容,如果您有任何疑问,请告诉我。我已经清理了您的代码以更紧密地遵循PEP8,并添加了一些几何配置来使事情变得平整,因此您无需在标签上添加一堆空格。

import tkinter as tk
import tkinter.messagebox

root = tk.Tk()
root.columnconfigure(0, weight=1)
root.columnconfigure(1, weight=1)
root.title('Anti Bullying App')
root.geometry('555x100')


def checkbox1():
    if var1.get() == 1:
        tkinter.messagebox.showinfo('Error', 'Report It!', icon='warning')


tk.Label(root, text='Are you being bullied?', font='Ariel 20 bold').grid(row=0, column=0, columnspan=2, sticky='ew')

var1 = tk.IntVar(root, value=0)
var2 = tk.IntVar(root, value=0)

tk.Checkbutton(root, text='Yes', font='10', variable=var1, onvalue=1, offvalue=0).grid(row=1, column=0, sticky='ew')
tk.Checkbutton(root, text='No', font='10', variable=var2, onvalue=1, offvalue=0).grid(row=1, column=1, sticky='ew')
tk.Button(root, text="Submit", command=checkbox1).grid(row=2, column=0, columnspan=2)

root.mainloop()

结果:

enter image description here