Top.Mail.Ru
Ответы

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

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()

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Просветленный
8мес
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
 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("<<ComboboxSelected>>", 
                      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()  


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

Аватар пользователя
Просветленный
8мес

Ага, как же.....признай, что делал домашку-и решил сачкануть.

Аватар пользователя
Искусственный Интеллект
8мес

Это исправь

1234567891011121314151617181920212223
  
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("Внимание", "Выберите коды валют") 
 
Аватар пользователя
8мес

ты бы скрин ошибки скинул что ли хз