Осложнения с логическими значениями в графическом интерфейсе и вывод на экран для отображения расчетной цены, основанной на логических входных данных пользователя в графическом интерфейсе?
У меня есть другая программа с графическим интерфейсом, которую я пытаюсь запустить, чтобы показать параметры меню, а затем вычислить общую стоимость заказа.
Я только что попросил помощи на Mad Lib и пытался создать подобный способ и, вероятно, имел опечатки, но я получаю сообщение об ошибке без атрибутов для чего-то, что, похоже, явно там. Любая помощь?
import tkinter as tk #tk, again, is easier to type
class Application(tk.Frame): # Set up the GUI
def __init__(self, master):
tk.Frame.__init__(self, master)
tk.Label(self, text="Please place your order. Select all you want.").grid(row=0, column=0, columnspan=2, sticky="w")
tk.Label(self, text="Menu:").grid(row= 1, column=0, sticky="w")
self.is_nose = tk.BooleanVar()
tk.Checkbutton(self, text="Jellied moose nose ... $97", variable=self.is_nose).grid(row=2, column=1, sticky="w")
self.is_hag = tk.BooleanVar()
tk.Checkbutton(self, text="Haggis ... $18", variable=self.is_hag).grid(row=2, column=2, sticky="w")
self.is_feet = tk.BooleanVar()
tk.Checkbutton(self, text="Chicken feet ... $2", variable=self.is_feet).grid(row=2, column=3, sticky="w")
tk.Label(self, text="Sauce:").grid(row=3, column=0, sticky="w") # sauce options raio buttons (choose one)
self.sauce = tk.StringVar()
sauce = ["Maple syrup", "Chimichurri", "Wasabi"] # options for sauces
column = 1
for sau in sauce: # loop to place and label the radio buttons for sauces
tk.Radiobutton(self, text=sau, variable=self.sauce, value=sau).grid(row=4, column=column, sticky="w")
column += 1
tk.Button(self, text="Calculate your price!", command=self.menu_order).grid(row=5, column=0, sticky="w")
self.order_txt = tk.Text(self, width=75, height=10, wrap="word")
self.order_txt.grid(row=6, column=0, columnspan=4)
def menu_order(self):
order = ""
price = 0
if self.is_nose():
order += "You chose jellied moose nose. Gross. Price is $97. \n"
price = price + 97
if self.is_hag():
order += "You chose haggis. Yuck. Price is $45. \n"
price = price + 45
if self.is_feet():
order += "You chose chicken's feet. Why? Price is $3. \n"
price = price + 3
sauce = self.sauce.get()
order = "You have successfully placed your next stomachache! "
order += "Here is your order: "
order += order + " "
order += "Your total price will be "
order += price + " dollars today."
order += "Why did you order that?!"
self.order_txt
self.order_txt.delete("1.0", "end")
self.order_txt.insert("1.0", order)
self.order_txt.insert("1.0", price)
root = tk.Tk()
root.title("Order Up!")
app = Application(root).grid(row=0, column=0, sticky="nsew")
root.mainloop()
Теперь я получаю новый набор ошибок вокруг логических значений теперь, когда отступ исправлен.
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1702, in __call__
return self.func(*args)
File "C:/Users/HP/AppData/Local/Programs/Python/Python36/Order Up.py", line 72, in menu_order
if self.is_nose():
TypeError: 'BooleanVar' object is not callable
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\HP\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1702, in __call__
return self.func(*args)
File "C:/Users/HP/AppData/Local/Programs/Python/Python36/Order Up.py", line 72, in menu_order
if self.is_nose():
TypeError: 'BooleanVar' object is not callable