Python - Tkinter CheckButton问题

时间:2017-12-03 11:31:42

标签: python user-interface tkinter

这是我的GUI程序的一部分,我遇到了问题,并希望有人可以帮助我。我要做的是,当你点击检查按钮时,它应该显示文本小部件的价格,但是当我点击检查按钮时它会给我一个错误:

  

文件“E:\ Phython \ Theater.py”,第147行,在update_text中       if self.matinee_price.get():   AttributeError:'Checkbutton'对象没有属性'get'

def matinee_pricing(self):
    #Purchase Label
    self.theater_label = tkinter.Label(text='Purchase Theater Seats Here', font=('Verdana', 15, 'bold'))
    self.theater_label.grid(row=2, column=10)
    #Checkbutton
    self.matinee_price = BooleanVar()
    self.matinee_price = tkinter.Checkbutton(text = '101 \nthru \n105', font=('Verdana', 10), bg='light pink', height=5, width=10,\
                                             variable = self.matinee_price, command = self.update_text)
    self.matinee_price.grid(row=5, column=9)

    self.result = tkinter.Text(width=10, height=1, wrap = WORD)
    self.result.grid(row=20, column=10)

def update_text(self):
    price = ''

    if self.matinee_price.get():
        price += '$50'

    self.result.delete(0.0, END)
    self.result.insert(0.0, price)

1 个答案:

答案 0 :(得分:0)

你用复选框本身覆盖了布尔变量。您BoolenaVar的声明需要一个不同的名称,而您的其他功能需要检查该名称。

此外,复选框默认使用0和1来描述其状态。如果您想使用布尔值,则需要相应地更改onvalueoffvalue

def matinee_pricing(self):
    # [...]
    self.matinee_price_var = BooleanVar() # Different name for the variable.
    self.matinee_price = tkinter.Checkbutton(text = '101 \nthru \n105', font=('Verdana', 10), bg='light pink', height=5, width=10,\
                                             variable = self.matinee_price_var, onvalue=True, offvalue=False, command = self.update_text)
    # Add onvalue, offvalue to explicitly set boolean states.
    # [...]

def update_text(self):
    price = ''

    # Use the variable, not the checkbox
    if self.matinee_price_var.get(): 
        price += '$50'
    #[...]

P.S。:你不需要\来打破括号内的线条。 Python假设括号内的所有内容都是前一个命令的一部分,在本例中是复选框。只是确保你没有得到任何语法错误,并且不要跨行分割单个参数。