Метод Цельсия в градусах Фаренгейта не работает - PullRequest
1 голос
/ 19 февраля 2020

Я новичок в мире компьютерных разработок и начинаю с Python.

Я пытаюсь создать конвертер Цельсия - Фаренгейта (и наоборот), используя Tkinter. Я создаю метод с именем "celsius_to_fahrenheit" и определяю его так:

def celsius_to_fahrenheit():
    n = celsius_entry.get()
    result = n * 9 / 5 + 32
    fahrenheit_entry.delete(0, END)
    fahrenheit_entry.insert(0, result)

Метод запускается кнопкой, и когда я пу sh, появляется эта ошибка:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\[Me]\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
  File "D:/Mes Documents/[Me]/Programmation/Python/Projets/ui/degree_farenheit.py", line 7, in celsius_to_fahrenheit
    result = n * 9 / 5 + 32
TypeError: unsupported operand type(s) for /: 'str' and 'int'

Надеюсь, вы мне поможете!

Ответы [ 2 ]

3 голосов
/ 19 февраля 2020

Тип n стр. Это должно быть преобразовано в FLOAT перед расчетом.

n = float(celsius_entry.get())
0 голосов
/ 25 февраля 2020

Вот полный код рабочего примера:

from tkinter import *

degree_sign= u'\N{DEGREE SIGN}'

window = Tk()
window.title( '%cF -> %cC' % (degree_sign,degree_sign) )

entry = Entry( window )
entry2 = Entry( window )

def celsius_to_fahrenheit():
    n = float(entry.get())
    result = (n * (9/5)) + 32
    entry.delete(0, END)
    entry2.delete(0, END)
    entry2.insert(0, result)

def fahrenheit_to_celcius():
    n = float(entry2.get())
    result = (n -32) / (9/5)
    entry2.delete(0, END)
    entry.delete(0, END)
    entry.insert(0, result)

label = Label(window, text = 'Enter Celcius')
label.grid( row=1,column=1)
entry.grid( row=1,column=2 )
btn = Button( window , text = 'Convert to Farenheit' , command=celsius_to_fahrenheit )
btn.grid( row=1,column=3 )

label2 = Label(window, text = 'Enter Farenheit')
label2.grid( row=2,column=1)
entry2.grid( row=2,column=2 )
btn2 = Button( window , text = 'Convert to Celcius' , command=fahrenheit_to_celcius )
btn2.grid( row=2,column=3 )

window.mainloop()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...