exchange-rate

نرم افزار قیمت ارز و طلا به همراه سورس کد پایتون

این روز ها که ماشالله قیمت ها حسابی بالا پایین می شه نیاز به یک نرم افزار دم دست و سبک برای دریافت قیمت ارز و طلا بیش از پیش حس می شه.

در این پست قصد داریم به کمک زبان پایتون و api وبسایت “پارسی جو” یک نرم افزار ساده برای دریافت قیمت های ارز و طلا بنویسیم.

 

سورس کد ارز

import tkinter as tk
import tkinter.ttk as ttk
from urllib.request import urlopen
from xml.etree.ElementTree import parse

class AppBase:
    def __init__(self):
        self.mywin = tk.Tk()
        self.mywin.title("قيمت ارز")
        self.frame1 = tk.Frame(self.mywin)
        self.frame1.pack()

        lb_header = ['تغييرات (درصد)','قيمت (ريال)','نام ارز','شماره']
        var_url = urlopen('http://parsijoo.ir/api?serviceType=price-API&query=Currency')
        xmldoc = parse(var_url)
        lb_list = []
        i = 0;
        for item in xmldoc.iterfind('sadana-services/price-service/item'):
            name = item.findtext('name')
            price = item.findtext('price')
            change = item.findtext('change')
            percent = item.findtext('percent')
            i = i+1;
            
            lb_list += [(percent+change,price,name,i)]
        style = ttk.Style()
        style.configure("mystyle.Treeview.Heading", font=('Calibri', 12,'bold')) # Modify the font of the headings
        self.tree = ttk.Treeview(columns=lb_header, show="headings",height=len(lb_list),style='mystyle.Treeview')
        self.tree.column('نام ارز',anchor="center",width=100)
        self.tree.column('قيمت (ريال)',anchor="center",width=100)
        self.tree.column('تغييرات (درصد)',anchor="center",width=100)
        self.tree.column('شماره',anchor="center",width=100)
        self.tree.grid(in_=self.frame1)
        
        for col in lb_header:
            self.tree.heading(col, text=col.title())
        for item in lb_list:
            self.tree.insert('', 'end', values=item)
            
    def start(self):
        self.mywin.mainloop()
app=AppBase()
app.start()  

سورس کد طلا

import tkinter as tk
import tkinter.ttk as ttk
from urllib.request import urlopen
from xml.etree.ElementTree import parse

class AppBase:
    def __init__(self):
        self.mywin = tk.Tk()
        self.mywin.title("قيمت طلا")
        self.frame1 = tk.Frame(self.mywin)
        self.frame1.pack()

        lb_header = ['تغييرات (درصد)','قيمت (ريال)','نام','شماره']
        var_url = urlopen('http://parsijoo.ir/api?serviceType=price-API&query=Gold')
        xmldoc = parse(var_url)
        lb_list = []
        i = 0;
        for item in xmldoc.iterfind('sadana-services/price-service/item'):
            name = item.findtext('name')
            price = item.findtext('price')
            change = item.findtext('change')
            percent = item.findtext('percent')
            i = i+1;
            
            lb_list += [(percent+change,price,name,i)]
        style = ttk.Style()
        style.configure("mystyle.Treeview.Heading", font=('Calibri', 12,'bold')) # Modify the font of the headings
        self.tree = ttk.Treeview(columns=lb_header, show="headings",height=len(lb_list),style='mystyle.Treeview')
        self.tree.column('نام',anchor="center",width=100)
        self.tree.column('قيمت (ريال)',anchor="center",width=100)
        self.tree.column('تغييرات (درصد)',anchor="center",width=100)
        self.tree.column('شماره',anchor="center",width=100)
        self.tree.grid(in_=self.frame1)
        
        for col in lb_header:
            self.tree.heading(col, text=col.title())
        for item in lb_list:
            self.tree.insert('', 'end', values=item)
            
    def start(self):
        self.mywin.mainloop()
app=AppBase()
app.start()  

 

همون طور که می بینید تفاوت چندانی میان این دو کد وجود نداره ، تنها تفاوتشون آدرس api قیمت و یک سری نام گذاری هاست.

شما می تونید در طراحی این کد ها یکم خلاقیت نشون بدید.

برای مثال می تونید یک دکمه بارگزاری مجدد به اون اضافه کنید یا این دو سورس رو با هم ترکیب کنید و در دو صفحه نمایش بدید. 🙂

 

 

توضیح کد ها:

import tkinter as tk
import tkinter.ttk as ttk
from urllib.request import urlopen
from xml.etree.ElementTree import parse

در این قسمت کتاب خونه های لازم رو اضافه می کنیم

 

self.mywin = tk.Tk()
self.mywin.title("قيمت ارز")
self.frame1 = tk.Frame(self.mywin)
self.frame1.pack()

در این قسمت اطلاعات لازم برای پنجره گرافیکی پایتون رو وارد می کنیم

 

lb_header = ['تغييرات (درصد)','قيمت (ريال)','نام ارز','شماره']
var_url = urlopen('http://parsijoo.ir/api?serviceType=price-API&query=Currency')
xmldoc = parse(var_url)
lb_list = []
i = 0;

متغییر های مورد نیاز از جمله لینک و متن هدر هر ستون

 

# تشکیل لیست اطلاعات
for item in xmldoc.iterfind('sadana-services/price-service/item'):
    name = item.findtext('name')
    price = item.findtext('price')
    change = item.findtext('change')
    percent = item.findtext('percent')
    i = i+1;
    lb_list += [(percent+change,price,name,i)]

در این قسمت یک حلقه تشکیل می دیم و تا اتمام حلقه اطلاعات رو درون یک لیست می ریزیم

 

style = ttk.Style()
style.configure("mystyle.Treeview.Heading", font=('Calibri', 12,'bold')) # Modify the font of the headings
self.tree = ttk.Treeview(columns=lb_header, show="headings",height=len(lb_list),style='mystyle.Treeview')

این تیکه کد به هدر ستون ها استایل و فونت می ده

 

 طول و وسط چین شدن سلول ها
self.tree.column('نام ارز',anchor="center",width=100)
self.tree.column('قيمت (ريال)',anchor="center",width=100)
self.tree.column('تغييرات (درصد)',anchor="center",width=100)
self.tree.column('شماره',anchor="center",width=100)
self.tree.grid(in_=self.frame1)

برای وسط چین کردن و همچنین دادن عرض به هر سلول این قسمت رو اضافه می کنیم

 

# درج کردن سلول و هدر
for col in lb_header:
    self.tree.heading(col, text=col.title())
for item in lb_list:
    self.tree.insert('', 'end', values=item)

در آخر هم اطلاعات هدر و سلول هارو با قرار دادنشون در این حلقه در پنجره نمایش می دیم

 

 

این هم فایل نصبی نرم افزار و خروجی کد های بالا:

رمز: mr-moein.ir

 

  • نکته: با توجه به این که نرم افزار آنلاین عه ، موقع اجرا باید به اینترنت متصل باشید.
  • نکته: بعد از اجرای برنامه حدودا 10 ثانیه صبر کرده تا کامل برنامه اجرا شود

 

 

 

امید وارم که  این سورس کد ساده برای شما مفید بوده باشه و بتونید ازش استفاده کنید. 🙂

نظر خود را بگویید

آدرس ایمیل شما منتشر نخواهد شد. قسمت های مورد نیاز علامت گذاری شده است *