Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нашел код в нем было много ошибок я их по исправлял но всеравно какаято ошибка осталась

Сергей Варданян Ученик (219), на голосовании 1 месяц назад
from tkinter import *

from tkinter import ttk

from tkinter import messagebox as mb

import requests



def update_b_label(event):

# Получаем полное название базовой валюты из словаря и обновляем метку

code = base_combobox.get()

name = currencies[code]

b_label.config(text=name)



def update_t_label(event):

# Получаем полное название целевой валюты из словаря и обновляем метку

code = target_combobox.get()

name = currencies[code]

t_label.config(text=name)



def exchange():

target_code = target_combobox.get()

base_code = base_combobox.get()



if target_code and base_code:

try:

response = requests.get(f'https://open.er-api.com/v6/latest/{base_code}')

response.raise_for_status()



data = response.json()



if target_code in data['rates']:

exchange_rate = data['rates'][target_code]

base = currencies[base_code]

target = currencies[target_code]

mb.showinfo("Курс обмена", f"Курс {exchange_rate:.1f} {target} за 1 {base}")

else:

mb.showerror("Ошибка", f"Валюта {target_code} не найдена")

except Exception as e:

mb.showerror("Ошибка", f"Ошибка: {e}")

else:

mb.showwarning("Внимание", "Выберите коды валют")



# Словарь кодов валют и их полных названий

currencies = {

"USD": "Американский доллар",

"EUR": "Евро",

"JPY": "Японская йена",

"GBP": "Британский фунт стерлингов",

"AUD": "Австралийский доллар",

"CAD": "Канадский доллар",

"CHF": "Швейцарский франк",

"CNY": "Китайский юань",

"RUB": "Российский рубль",

"KZT": "Казахстанский тенге",

"UZS": "Узбекский сум"

}



# Создание графического интерфейса

window = Tk()

window.title("Курс обмена валюты")

window.geometry("360x300")



Label(text="Базовая валюта:").pack(padx=10, pady=5)

base_combobox = ttk.Combobox(values=list(currencies.keys()))

base_combobox.pack(padx=10, pady=5)

base_combobox.bind("<<ComboboxSelected>>", update_b_label)



b_label = ttk.Label()

b_label.pack(padx=10, pady=10)



Label(text="Целевая валюта:").pack(padx=10, pady=5)

target_combobox = ttk.Combobox(values=list(currencies.keys()))

target_combobox.pack(padx=10, pady=5)

target_combobox.bind("<<ComboboxSelected>>", update_t_label)



t_label = ttk.Label()

t_label.pack(padx=10, pady=10)



Button(text="Получить курс обмена", command=exchange).pack(padx=10, pady=10)



window.mainloop()
Голосование за лучший ответ
Федор Конопля Профи (593) 2 месяца назад
ты бы скрин ошибки скинул что ли хз
Сергей ВарданянУченик (219) 2 месяца назад
Федор Конопля Профи (593) Сергей Варданян, покажи свои файлы и папки
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (158420) 2 месяца назад
Это исправь
  
def exchange():
target_code = target_combobox.get()
base_code = base_combobox.get()
if target_code and base_code:
try:
response = requests.get(f'https://open.er-api.com/v6/latest/{base_code}')
response.raise_for_status()

data = response.json()

if target_code in data['rates']:
exchange_rate = data['rates'][target_code]
base = currencies[base_code]
target = currencies[target_code]
mb.showinfo("Курс обмена", f"Курс {exchange_rate:.1f} {target} за 1 {base}")
else:
mb.showerror("Ошибка", f"Валюта {target_code} не найдена")
except Exception as e:
mb.showerror("Ошибка", f"Ошибка: {e}")
else:
mb.showwarning("Внимание", "Выберите коды валют")
Данил Абрамов Просветленный (39294) 2 месяца назад
Ага, как же.....признай, что делал домашку-и решил сачкануть.
Татьяна Просветленный (36390) 2 месяца назад
 import tkinter as tk 
from tkinter import ttk, messagebox
import requests # pip install requests
from functools import partial


class CurrencyExchangeApp:
CURRENCIES = {
"USD": "Американский доллар",
"EUR": "Евро",
"JPY": "Японская йена",
"GBP": "Британский фунт стерлингов",
"AUD": "Австралийский доллар",
"CAD": "Канадский доллар",
"CHF": "Швейцарский франк",
"CNY": "Китайский юань",
"RUB": "Российский рубль",
"KZT": "Казахстанский тенге",
"UZS": "Узбекский сум"
}

def __init__(self):
self.window = tk.Tk()
self.window.title("Курс обмена валюты")
self.window.geometry("360x300")
self.create_widgets()

def create_widgets(self):
self.create_currency_section("Базовая валюта:", "base")
self.create_currency_section("Целевая валюта:", "target")
tk.Button(self.window, text="Получить курс обмена",
command=self.exchange).pack(padx=10, pady=10)

def create_currency_section(self, label_text, prefix):
tk.Label(self.window, text=label_text).pack(padx=10, pady=5)
combobox = ttk.Combobox(
self.window, values=list(self.CURRENCIES.keys()))
combobox.pack(padx=10, pady=5)
combobox.bind("<>",
partial(self.update_label, prefix))
setattr(self, f"{prefix}_combobox", combobox)
label = ttk.Label(self.window)
label.pack(padx=10, pady=10)
setattr(self, f"{prefix}_label", label)

def update_label(self, prefix, event):
combobox = getattr(self, f"{prefix}_combobox")
label = getattr(self, f"{prefix}_label")
code = combobox.get()
name = self.CURRENCIES.get(code, "")
label.config(text=name)

def exchange(self):
target_code = self.target_combobox.get()
base_code = self.base_combobox.get()
if not (target_code and base_code):
messagebox.showwarning("Внимание", "Выберите коды валют")
return

try:
response = requests.get(
f'https://open.er-api.com/v6/latest/{base_code}')
response.raise_for_status()
data = response.json()
exchange_rate = data['rates'].get(target_code)
if exchange_rate is None:
raise ValueError(f"Валюта {target_code} не найдена")

base = self.CURRENCIES[base_code]
target = self.CURRENCIES[target_code]
messagebox.showinfo("Курс обмена", f"Курс {
exchange_rate:.1f} {target} за 1 {base}")
except Exception as e:
messagebox.showerror("Ошибка", f"Ошибка: {e}")

def run(self):
self.window.mainloop()


if __name__ == "__main__":
app = CurrencyExchangeApp()
app.run()

результат выполнения программы
Похожие вопросы