import requests
import json
from tkinter import *
from tkinter import messagebox
class Kurs_Valiut(Tk):
w = "https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json"
w2 = 'img/exchange.json'
options_list = []
def __init__(self):
super().__init__()
self.geometry("500x400")
self.Title = Label(self, text="Курс валют",
font = ["Comic Sans MS",18])
self.Title.grid(column=0,
row = 0,
columnspan = 2,
padx=10,
pady=10)
self.btn_i = Button(self, text='Завантажити з інтернету',
command = lambda: self.show("i"),
font = ["Comic Sans MS",12])
self.btn_i.grid(column=0,
row = 1,
padx=10,
pady=10)
self.btn_f = Button(self, text='Завантажити з файлу',
command = lambda: self.show("f"),
font = ["Comic Sans MS",12])
self.btn_f.grid(column=1,
row = 1,
padx=10,
pady=10)
def show(self,t=None):
if t == 'i':
self.data = self.download_json()
elif t == 'f':
self.data = self.open_json()
else:
self.data = 'error'
for el in self.data:
self.options_list.append(el["txt"])
self.value_inside = StringVar()
# Set the default value of the variable
self.value_inside.set("Оберіть валюту")
# Create the optionmenu widget and passing
# the options_list and value_inside to it.
self.Kurs_question_menu = OptionMenu(self, self.value_inside, *self.options_list)
self.Kurs_question_menu.grid(column=0, row = 2)
self.btn = Button(self, text='Переглянути курс',
command = self.kurs,
font = ["Comic Sans MS",12])
self.btn.grid(column=1, row = 2)
def download_json(self):
try:
url = requests.get(self.w)
u = url.text
except:
messagebox.showerror("showerror", "Error")
u = {
"0": 0,
"txt": "Немає даних",
"rate": 0,
"cc": "Немає данних",
"exchangedate": "00.00.2000"
}
finally:
self.y = json.loads(u)
return self.y
def open_json(self):
with open ('img/exchange.json',mode="r", encoding="utf-8") as f:
self.y = json.load(f)
return self.y
def kurs(self):
select = self.value_inside.get()
for i in range(len(self.data)):
if self.data[i]["txt"] == select:
r = self.data[i]
t_rez = f"Назва: {r['txt']} \nКоротка назва: {r['cc']} \nКурс: {r['rate']} \nДата: {r['exchangedate']}"
self.Kurs_r_name = Label(self, text = t_rez,font = ["Comic Sans MS",16],fg="blue", justify="left")
self.Kurs_r_name.grid(column=1, row = 3)
k = Kurs_Valiut()
k.mainloop()
======================
З додатковою кнопкою
import requests
import json
from tkinter import *
from tkinter import messagebox
class Kurs_Valiut(Tk):
w = "https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json"
w2 = 'img/exchange.json'
options_list = []
def __init__(self):
super().__init__()
self.geometry("500x400")
self.Title = Label(self, text="Курс валют",
font = ["Comic Sans MS",18])
self.Title.grid(column=0,
row = 0,
columnspan = 2,
padx=10,
pady=10)
self.btn_i = Button(self, text='Завантажити з інтернету',
command = lambda: self.show("i"),
font = ["Comic Sans MS",12])
self.btn_i.grid(column=0,
row = 1,
padx=10,
pady=10)
self.btn_f = Button(self, text='Завантажити з файлу',
command = lambda: self.show("f"),
font = ["Comic Sans MS",12])
self.btn_f.grid(column=1,
row = 1,
padx=10,
pady=10)
def show(self,t=None):
if t == 'i':
self.data = self.download_json()
elif t == 'f':
self.data = self.open_json()
else:
self.data = 'error'
for el in self.data:
self.options_list.append(el["txt"])
self.value_inside = StringVar()
# Set the default value of the variable
self.value_inside.set("Оберіть валюту")
# Create the optionmenu widget and passing
# the options_list and value_inside to it.
self.Kurs_question_menu = OptionMenu(self, self.value_inside, *self.options_list)
self.Kurs_question_menu.grid(column=0, row = 2)
self.btn = Button(self, text='Переглянути курс',
command = self.kurs,
font = ["Comic Sans MS",12])
self.btn.grid(column=1, row = 2)
self.btn_d = Button(self, text="Долар США", command = lambda:self.kurs("Долар США"))
self.btn_d.grid(column=0, row= 3)
self.btn_e = Button(self, text="Євро", command = lambda:self.kurs("Євро"))
self.btn_e.grid(column=0, row= 4)
def download_json(self):
try:
url = requests.get(self.w)
u = url.text
except:
messagebox.showerror("showerror", "Error")
u = {
"0": 0,
"txt": "Немає даних",
"rate": 0,
"cc": "Немає данних",
"exchangedate": "00.00.2000"
}
finally:
self.y = json.loads(u)
return self.y
def open_json(self):
with open ('img/exchange.json',mode="r", encoding="utf-8") as f:
self.y = json.load(f)
return self.y
def kurs(self,s = None):
if s == None:
self.select = self.value_inside.get()
else:
self.select = s
for i in range(len(self.data)):
if self.data[i]["txt"] == self.select:
r = self.data[i]
t_rez = f"Назва: {r['txt']} \nКоротка назва: {r['cc']} \nКурс: {r['rate']} \nДата: {r['exchangedate']}"
self.Kurs_r_name = Label(self, text = t_rez,font = ["Comic Sans MS",16],fg="blue", justify="left")
self.Kurs_r_name.grid(column=1, row = 3)
k = Kurs_Valiut()
k.mainloop()
Коментарі
Дописати коментар