#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() и это устраняет ошибку «Категория не определена».