这是我的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)
答案 0 :(得分:0)
你用复选框本身覆盖了布尔变量。您BoolenaVar
的声明需要一个不同的名称,而您的其他功能需要检查该名称。
此外,复选框默认使用0和1来描述其状态。如果您想使用布尔值,则需要相应地更改onvalue
和offvalue
。
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假设括号内的所有内容都是前一个命令的一部分,在本例中是复选框。只是确保你没有得到任何语法错误,并且不要跨行分割单个参数。