кнопка результатов исчезает, а код условия не работает

#python #tkinter #button #conditional-statements

Вопрос:

Я новичок в Python и не мог решить эту проблему более 1 недели. Каждый раз, когда я пытаюсь вставить код с условием, например, если результат равен нулю, распечатать («изменить порядок») или какие-либо коды, кнопка «Результат» исчезает. Код условия также не работает. Как я должен написать код условия, чтобы он работал, а также убедиться, что кнопка результата не исчезнет. Спасибо. Ниже приведен мой код:

 #import tkinter module
import tkinter as tk

#initialise the window manager
root = tk.Tk()
root.title("Inventory system menu")
canvas = tk.Canvas(root, height=400, width=500, bg="White")
frame=tk.Frame(root, bg="green")
frame.place(relwidth=0.9, relheight=0.9, relx=0.05, rely=0.05)

#define label widget
tk.Label(frame, font=("Helvetica", 20), text="Quantity:").grid(row=0)
tk.Label(frame, font=("Helvetica", 20), text="Price:").grid(row=1,column=0)
tk.Label(frame, font=("Helvetica", 20), text="Category:").grid(row=2,column=0)
tk.Label(frame, font=("Helvetica", 20), text="Description:").grid(row=3,column=0)

# define entry variables
Quantity = tk.StringVar()
Price = tk.StringVar()

# assign the StringVar to the entry widget text variables
Quantity= tk.Entry(frame, textvariable=Quantity)
Quantity.grid(row=0, column=1)
Price= tk.Entry(frame, textvariable=Price)
Price.grid(row=1, column=1)
Category= tk.Entry(frame, textvariable=Category)
Category.grid(row=2, column=1)
Description= tk.Entry(frame, textvariable=Description)
Description.grid(row=3, column=1)

#formula (relationship between quantity and price)
def generate():
  
  result = float(Quantity.get()) * float(Price.get())
  print(result)
  #result widget
generate=tk.Button(frame, text="result", height="2", width="8", fg="Black", bg="yellow",command=generate)
generate.grid(row=4, column=2)

#geometric management pack
canvas.pack()
root.mainloop()
 

Комментарии:

1. Вы не должны использовать одно и то же имя переменной для нескольких вещей. Также в вашем случае нет смысла в StringVar s, потому что вы можете просто использовать <tk.Entry>.get()

2. Ваш код выдает ошибку: Category= tk.Entry(frame, textvariable=Category) NameError: name 'Category' is not defined . Категория изменяемого текста не определена (то же самое для изменяемого текста=Описание). Вы тоже получили эту ошибку, или ваш код здесь неполный?

3. @TheLizzard — я получаю неверный синтаксис при вводе количества = Запись>.get()

4.@Ученик, Вам нужно заменить <tk.Entry> его на вашу запись. Я просто показывал, что это был tkinter Entry объект, и что вы звоните, звоните .get()

5. @8349697. Ты прав. Я просто добавил количество = tk.StringVar() Цена = tk.StringVar() Категория= tk.StringVar() Описание=tk.StringVar() и это устраняет ошибку «Категория не определена».