Как Умножить / Разделить Поле Ввода С Числом, tkinter

#python #tkinter #tkinter-entry

Вопрос:

Эй, я довольно новичок в python и учусь в старших классах. Для задания, над которым я работаю, мы должны создать графический интерфейс tkinter, который включает виджеты, ярлык, кнопки, поле ввода, кнопки радио или проверки, рамки и окно отображения. Я создаю конвертер километров в мили, который может сделать обратное, если он выбран, будут переключатели, которые пользователь может выбрать, какой из них он хотел бы рассчитать, но у меня много проблем с вычислением, потому что я не могу получить номер поля ввода кратным или разделить на 1,609 или любое другое число. Вот код, который у меня сейчас есть, я приношу извинения за беспорядок и за то, насколько это, вероятно, плохо

 import tkinter as tk import tkinter.messagebox  # Customize main window root = tk.Tk() root.title('GUI Assignment')    # Create the frames, right, left, and bottom, and pack them bframe = tk.LabelFrame(root, highlightthickness=0, borderwidth=0, padx=100, pady=50) bframe.pack(side='bottom') rframe = tk.LabelFrame(root, highlightthickness=0, borderwidth=0, padx=100, pady=50) rframe.pack(side='right') lframe = tk.LabelFrame(root, highlightthickness=0, borderwidth=0, padx=100, pady=50) lframe.pack(side='left')   # Make the label and the entry box for the right frame dlabel = tk.Label(rframe, text = 'Enter the distance', ) dentry = tk.Entry(rframe, width=75) # Pack the label and entry dlabel.pack(side='left') dentry.pack(side="right") dist = 3.0 temp =(dentry.get()) # Create the convert command def convert():  if radio_var.get()==1:  tkinter.messagebox.showinfo('Distance',temp / dist )  # Make the convert and quit buttons b = tk.Button(bframe, text="Convert", command=convert) quit = tk.Button(bframe, text='Quit', command=root.destroy)  # Pack the buttons b.pack(side='left') quit.pack(side='right')  # Make the radio variable  radio_var = tk.IntVar() radio_var.set(1)  # Make the radio buttons for the left frame rb = tk.Radiobutton(lframe, text='Km to Miles', variable=radio_var, value=1) rb2 = tk.Radiobutton(lframe, text='Miles to Km', variable=radio_var, value=2)  # Pack The Radio Buttons rb.pack() rb2.pack()     root.mainloop()  

Ответ №1:

Проблема , с которой вы столкнулись здесь, заключается в том , что вы пытаетесь разделить temp строку на dist поплавок. Вам нужно преобразовать temp в поплавок, прежде чем конвертировать его с помощью float(temp) . Кроме того, поскольку вы установили temp один раз во время выполнения сценария, он будет ссылаться только на значение, которое было в поле ввода, как только переменная была назначена. Чтобы исправить это, вы должны вызывать dentry.get() внутри своей convert() функции, а не за ее пределами.