Arkadaşlar çeşitli kripto platformalarında kripto alıp satıyorum. Buralara aktardığım para ve buralardaki mevcut coinlerin güncel durumlarını, bu alım satımları kayıt altına alacağım bir proğram yazmaya çalışıyorum. Genel olarak çoğu işi hallettim gibi. Pyqt 5 ile arayüz tasarladım sqlite 3 ile verileri tutuyorum bir sorun yok. Python ile kodlarını yazdım. Ama bu tasarladığım arayüzde birde bu platformlara aktardığım paranın grafiğini görmek istiyorum. Örnek: Binance =250$ , Gateİo =700$, Huobi =300$, Bitfinex=180$, BtcTürk=600$ para aktarmışım bu paraları bir pasta grafiği olarak arayüzde görmek istiyorum. Burda sorunum grafiği arayüz içinde görmek bunula ilgili türkçe bir kaynak bulamadım. Yabancı kaynakları da ya ben tam anlamıyorum yada iyi anlatan bir kaynak bulamadım.
Pyqt 5 ile tasarladığım arayüzü yani Uİ dosyasını py uzantılı dosyaya çevirip import ettim ve oraya hiç müdahele etmiyorum işlemlerimi ayrı bir kod sayfasında yapıyorum (ui yi import ettiğim yerde)
bu aşamada ui içindeki GraphicView Widgetinin içine bu (veya her hangi bir veri olabilir) verinin grafiğini nasıl çizdireceğimi bulamadım. Yardımcı olabilecek arkadaş varmı veya bu işi düzgünce anlatan bir kaynak (mümkünse türkçe) önerebilecek bir arkadaş varmı. ihtiyaç olmadığını düşünerek kod eklemedim ama ihtiyaç olursa kodları paylaşabilirim.
Merhaba;
Haklısınız çoğu kaynak yabancı dilde ve ne kadarını anladığınızı yada anlayamadığınızı bilmiyoruz. Ne denediğinizi ve nerede takıldığınızı da bir kodla örnekleseydiniz daha kolay olabilirdi.
Kolay yoldan bir elips çizdirip, bu elipslerden bir grafik oluşturulaibilirdi.
Tasarımınıza takılmadan bir örnek bırakıyorum.
from PyQt5 import QtChart
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
from PyQt5.QtChart import QChart, QChartView
from PyQt5.QtGui import QPainter
from PyQt5.QtCore import Qt
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQtChart Pie Chart")
self.setGeometry(100, 100, 800, 600)
self.show()
self.create_piechart()
def create_piechart(self):
#Binance =250$ , Gateİo =700$, Huobi =300$, Bitfinex=180$, BtcTürk=600$
series = QtChart.QPieSeries()
series.append("Binance", 250)
series.append("CGateİo", 700)
series.append("Huobi", 300)
series.append("Bitfinex", 180)
series.append("BtcTürk", 600)
series.setLabelsVisible(True)
series.setLabelsPosition(QtChart.QPieSlice.LabelInsideHorizontal)
for slice in series.slices():
slice.setLabel("{:.2f}%".format(100 * slice.percentage()))
chart = QChart()
chart.addSeries(series)
chart.createDefaultAxes()
chart.setAnimationOptions(QChart.SeriesAnimations)
chart.setTitle("Financial Percentage Budget")
chart.legend().setVisible(True)
chart.legend().setAlignment(Qt.AlignBottom)
chart.legend().markers(series)[0].setLabel("Binance")
chart.legend().markers(series)[1].setLabel("CGateİo")
chart.legend().markers(series)[2].setLabel("Huobi")
chart.legend().markers(series)[3].setLabel("Bitfinex")
chart.legend().markers(series)[4].setLabel("BtcTürk")
chartview = QChartView(chart)
chartview.setRenderHint(QPainter.Antialiasing)
self.setCentralWidget(chartview)
if __name__ == '__main__':
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
Burada pyqttchart modülüne ihtiyaç duyacaksınız.
pip install pyqtchart
Komutu ile yükleyebilirsiniz.
Ardından kod çalışacaktır.
Verdiğiniz değerlere göre özellikle içinde bırakarak grafiği çizdirdim.
Siz bu değerleri sabit olarak kullanmayacaksınız tabi ki.
Bunun için;
def create_piechart(self):
Satırında parametre olarak girip, bu parametreleri,
series.append("Binance", 250)
series.append("CGateİo", 700)
series.append("Huobi", 300)
series.append("Bitfinex", 180)
series.append("BtcTürk", 600)
Alacağınız değerleri buradaki sabit rakamlar yerine ilgili değişkenleri aktararak grafiğinizi kolayca çizdirebilirsiniz.
Kolay gelsin.
İlginiz için teşekkür ediyorum. Verdiğiniz kod tek başına çalışıyor. Ama ben bunu benim kodum içine nasıl aktaracağım bir türlü bulamadım. Kodu ekliyorum çalıştırdığınızda göreceksiniz karşınıza çıkan ekranda yan yana üç tane boş alan var. Onlar pyqt5 de oluştururken forma koyduğum Graphics Widgetler ben bunların içinde görünsün istiyorum grafik ( belki grafik göstermek için farklı bir widget koymam gerekiyor bilmiyorum ben isminden dolayı bu olabileceğini düşünerek koydum) eğen farklı bir widget koymam gerekiyorsa onu koyayım ama grafiğin orada bir köşede formun içinde görünmesini istiyorum. ui dosyasını py uzantılı dosyaya çevirdim (onu da ekliyorum ) kodu orda yazmıyorum. onu grafiksel olarak qt designer içinde tasarlayıp sonra py ye çevirdim. kodu main.py içinde yazıyorum ve oradaki widgetlere ve diğer unsurlara (combobax, lineedit vs.) main.py dosyasından ui.combobox… vesaire gibi ulaşıyorum. Bu haliyle sizin verdiğiniz kodu buraya main py içine nasıl entegre edeceğimi bulamadım. Yardımcı olursanız sevinirim.
Düzenleme notu : main dosyasını kod olarak paylaştım ama diğer ui dosyasının py ye çevrilmiş halini buraya paylaşamadım kelime sınırına takıldım. Dosya olarak paylaşabilmemin bir yolu varmı? Sizin gönderdiğim kodu çalıştırabilmeniz için db dosyası ve ui nin py dosyası gerekiyor sanırım. Bunların hepsini bir arada size nasıl paylaşabilirim?
# _______________________KÜTÜPHANELER_İMPORTLAR____________________#
# _________________________________________________________________#
import sys
import json
import requests
from PyQt5.QtWidgets import *
from Proje_coin_ui import *
# _______________________UYGULAMA OLUŞTURMA________________________#
# _________________________________________________________________#
Uygulama = QApplication(sys.argv)
penAna = QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(penAna)
penAna.show()
# _______________________VERİ TABANI İŞLEMLERİ_____________________#
# _________________________________________________________________#
import sqlite3
global curs
global conn
conn = sqlite3.connect("genel.db")
curs = conn.cursor()
ui.lb_if_vakif.setVisible(False) # Vakıfbanka özel o seçilince görüntülenecek
ui.lineEdit.setVisible(False) # vakıfbanka özel o seçilince görüntülenecek
# burası alım veya satım için combobox tan borsa seçilene kadar görünmeyecek
ui.combo_coin.setVisible(False)
ui.ln_miktar.setVisible(False)
ui.ln_alisfiyat.setVisible(False)
ui.ln_toplamodenen.setVisible(False)
ui.ln_birimmaliyet.setVisible(False)
ui.btn_aliskaydet.setVisible(False)
ui.combo_coins.setVisible(False)
ui.ln_miktars.setVisible(False)
ui.ln_satisfiyat.setVisible(False)
ui.ln_toplamodenens.setVisible(False)
ui.ln_karzarars.setVisible(False)
ui.btn_satiskaydet.setVisible(False)
# _______________________KODLAMA_FONKSİYON YAZIMI_____________________#
# ____________________________________________________________________#
def getprice(argumancoinadi):
key = "https://api.binance.com/api/v3/ticker/price?symbol="
url = key + argumancoinadi
data = requests.get(url)
data = data.json()
return data['price']
def uygunmu(string: str) -> bool:
try:
sayı = float(string)
return True
except:
return False
# raise Exception()
def TABLOGOSTER(arguman):
olmasi_gereken = 0.0
tl_karsiligi = 0.0
ui.tblwid_nereden.clear()
ui.tblwid_nereden.setHorizontalHeaderLabels(
("ID", "TARİH", "YATIRILAN", "NERDEN", "ÇEKİLEN", "NEREYE", "OLMASI GEREKEN", "OLAN"))
ui.tblwid_nereden.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
curs.execute(f"SELECT * FROM {arguman}")
for satirindex, satırveri in enumerate(curs):
for sutunindex, sutunveri in enumerate(satırveri):
ui.tblwid_nereden.setItem(satirindex, sutunindex, QTableWidgetItem(str(sutunveri)))
try:
if sutunindex == 6:
olmasi_gereken += float(sutunveri)
if sutunindex == 7:
tl_karsiligi += float(sutunveri)
except:
pass
ui.lb_nereden_tablo_2.setText(str(olmasi_gereken) + " $")
if arguman == 'vakifhesap':
ui.lb_nereden_tablo_3.setText(str(tl_karsiligi) + " TL")
else:
ui.lb_nereden_tablo_3.setText("")
def TABLOGOSTER1(arguman):
olmasi_gereken = 0.0
tl_karsiligi = 0.0
ui.tblwid_nereye.clear()
ui.tblwid_nereye.setHorizontalHeaderLabels(
("ID", "TARİH", "YATIRILAN", "NERDEN", "ÇEKİLEN", "NEREYE", "OLMASI GEREKEN", "OLAN"))
ui.tblwid_nereye.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
curs.execute(f"SELECT * FROM {arguman}")
for satirindex, satırveri in enumerate(curs):
for sutunindex, sutunveri in enumerate(satırveri):
ui.tblwid_nereye.setItem(satirindex, sutunindex, QTableWidgetItem(str(sutunveri)))
try:
if sutunindex == 6:
olmasi_gereken += float(sutunveri)
if sutunindex == 7:
tl_karsiligi += float(sutunveri)
except:
pass
ui.lb_nereye_tablo_2.setText(str(olmasi_gereken) + " $")
if arguman == 'vakifhesap':
ui.lb_nereye_tablo_3.setText(str(tl_karsiligi) + " TL")
else:
ui.lb_nereye_tablo_3.setText("")
def AKTAR():
while True:
_date_hesap = ui.date_hesap.date().toString(QtCore.Qt.DateFormat.ISODate)
_ln_aktar = ui.ln_aktar.text()
_combob_nereden = ui.combob_nereden.currentText()
_combob_nereye = ui.combob_nereye.currentText()
if _ln_aktar == "":
QMessageBox.question(penAna, "Lütfen Dikkkat!!!", "Aktarılan miktar boş bırakılamaz!.",
QMessageBox.Ok)
break
if uygunmu(_ln_aktar):
pass
else:
QMessageBox.question(penAna, "Lütfen Dikkkat!!!",
"Girdiginiz sayının formatı uygun değil.!.Ondalık ayracı olarak nokta kullanın",
QMessageBox.Ok)
ui.ln_aktar.clear()
break
if _combob_nereden == "" or _combob_nereye == "":
QMessageBox.question(penAna, "Lütfen Dikkkat!!!",
"Hesap bölümleri boş olamaz her iki hesabıda seçtiğinizden emin olun!.",
QMessageBox.Ok)
break
if _combob_nereden == _combob_nereye:
QMessageBox.question(penAna, "Lütfen Dikkkat!!!",
"Her iki hesapta aynı hesap olamaz, Ayrıca tarih seçmeyi unutmayın.", QMessageBox.Ok)
ui.ln_aktar.clear()
break
_ln_aktary = '-' + _ln_aktar
_combob_nereden += "hesap"
_combob_nereye += "hesap"
yatirilan = "0"
if _combob_nereden == "vakifhesap":
olan = ui.lineEdit.text()
olan = "-" + olan
else:
olan = ""
if ui.lineEdit.isVisible() and ui.lineEdit.text() == "":
QMessageBox.question(penAna, "Lütfen Dikkkat!!!",
"Türk Lirası karşılığını boş bırakamazsınız.", QMessageBox.Ok)
break
curs.execute(
f'INSERT INTO {_combob_nereden} (tarih, yatirilan, nerden, cekilen, nereye, olmasigereken, olan) VALUES (?, ?, ?, ?, ?, ?, ?)',
(_date_hesap, yatirilan, _combob_nereden, _ln_aktary, _combob_nereye, _ln_aktary, olan))
yatirilan = _ln_aktar
cekilen = "0"
if _combob_nereye == "vakifhesap":
olan = ui.lineEdit.text()
else:
olan = ""
curs.execute(
f'INSERT INTO {_combob_nereye} (tarih, yatirilan, nerden, cekilen, nereye, olmasigereken, olan) VALUES (?, ?, ?, ?, ?, ?, ?)',
(_date_hesap, yatirilan, _combob_nereden, cekilen, _combob_nereye, yatirilan, olan))
conn.commit()
ui.combob_nereden.setCurrentIndex(-1)
ui.combob_nereye.setCurrentIndex(-1)
ui.ln_aktar.clear()
ui.lineEdit.clear()
ui.lineEdit.setVisible(False)
ui.lb_if_vakif.setVisible(False)
TABLOGOSTER(_combob_nereden)
TABLOGOSTER1(_combob_nereye)
break
def ilk():
argu = ui.combob_nereden.currentText()
argu += "hesap"
if argu == "vakifhesap":
ui.lb_if_vakif.setVisible(True)
ui.lineEdit.setVisible(True)
else:
ui.lb_if_vakif.setVisible(False)
ui.lineEdit.setVisible(False)
ui.lb_nereden_tablo.setText(argu)
TABLOGOSTER(argu)
def iki():
argu = ui.combob_nereye.currentText()
argu += "hesap"
if argu == "vakifhesap":
ui.lb_if_vakif.setVisible(True)
ui.lineEdit.setVisible(True)
else:
ui.lb_if_vakif.setVisible(False)
ui.lineEdit.setVisible(False)
ui.lb_nereye_tablo.setText(argu)
ui.lb_nereye_tablo_2.setText(argu)
TABLOGOSTER1(argu)
# ______________________________İKİNCİ BOLUM__________________________#
# ____________________________________________________________________#
def ISLEMGOSTER(arguman): #alım satım işlemlistesialım işlemlistesisatım
coinlist = set()
ui.lb_borsaadi.clear()
ui.lb_genel1.clear()
ui.lb_genel2.clear()
ui.combo_coin.clear()
ui.combo_coins.clear()
ui.tblwd_alimsatim.clear()
ui.tblwd_alimsatimozet.clear()
#alım satım tablosunu seçilen borsanın işlemleri ile dorduruyoruzx
ui.tblwd_alimsatim.setHorizontalHeaderLabels(
("ID", "TARİH", "COİN", "ALIŞ FİYAT", "MİKTAR", "TOPLAM ÖDENEN",
"GÜNCEL FİYAT",
"GÜNCEL EDER", "KARZARAR", "KASA"))
ui.tblwd_alimsatim.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
curs.execute(f"SELECT * FROM {arguman}")
conn.commit()
for satırindeks, satırveri in enumerate(curs):
for sutunindeks, sutunveri in enumerate(satırveri):
ui.tblwd_alimsatim.setItem(satırindeks, sutunindeks, QTableWidgetItem(str(sutunveri)))
if sutunindeks == 2:
coinlist.add(str(sutunveri))
# seçilen borsadaki mevcut coin isimlerini comboboxa ekler
ui.combo_coin.addItems(coinlist)
ui.combo_coins.addItems(coinlist)
"""
coinlistnew = set()
coinlistnew.clear()
for item in coinlist:
coinlistnew.add(item)
"""
ui.lb_borsaadi.setText(arguman.upper()) # secilen borsanın adını tablo başlığı olarak göstermek için
ozetle(arguman,*coinlist)
def ALIM():
while True:
date = ui.date_alis.date().toString(QtCore.Qt.DateFormat.ISODate)
borsa = ui.combob_borsa.currentText()
coin = ui.combo_coin.currentText().upper()
miktar = ui.ln_miktar.text()
alisfiyat = ui.ln_alisfiyat.text()
toplamodenen = ui.ln_toplamodenen.text()
if coin == "" or miktar == "" or alisfiyat == "" or toplamodenen == "" or borsa == "":
QMessageBox.question(penAna, "Lütfen Dikkkat!!!",
"Alanları boş bırakamazsınız tarih seçmeyi unutmayın.", QMessageBox.Ok)
break
curs.execute(
f"INSERT INTO {borsa} (tarih, coin, alisfiyat, miktar, toplamodenen, guncelfiyat, gunceleder, karzarar, kasa) VALUES (?,?,?,?,?,?,?,?,?)",
(date, coin, alisfiyat, miktar, ("-" + toplamodenen), "guncelfiyat", "gunceleder", "karzarar",
("-" + toplamodenen)))
conn.commit()
ui.combo_coin.clear()
ui.ln_miktar.clear()
ui.ln_alisfiyat.clear()
ui.ln_toplamodenen.clear()
ISLEMGOSTER(borsa)
break
def SATIM():
while True:
date = ui.date_satis.date().toString(QtCore.Qt.DateFormat.ISODate)
borsa = ui.combob_borsa_2.currentText()
coin = ui.combo_coins.currentText().upper()
miktar = ui.ln_miktars.text()
satisfiyat = ui.ln_satisfiyat.text()
toplamodenen = ui.ln_toplamodenens.text()
if coin == "" or miktar == "" or satisfiyat == "" or toplamodenen == "" or borsa == "":
QMessageBox.question(penAna, "Lütfen Dikkkat!!!",
"Alanları boş bırakamazsınız tarih seçmeyi unutmayın.", QMessageBox.Ok)
break
curs.execute(
f"INSERT INTO {borsa} (tarih, coin, alisfiyat, miktar, toplamodenen, guncelfiyat, gunceleder, karzarar, kasa) VALUES (?,?,?,?,?,?,?,?,?)",
(date, coin, satisfiyat, ("-" + miktar), toplamodenen, "guncelfiyat", "gunceleder", "karzarar",
toplamodenen))
conn.commit()
ui.combo_coins.clear()
ui.ln_miktars.clear()
ui.ln_satisfiyat.clear()
ui.ln_toplamodenens.clear()
ISLEMGOSTER(borsa)
break
def islemlistesialim(): #borsa adı seçildiğinde çağrılıyor
argu = ui.combob_borsa.currentText()
ISLEMGOSTER(argu)
ui.combo_coin.setVisible(True)
def islemlistesisatim(): #borsa adı seçildiğinde çağrılıyor
argu = ui.combob_borsa_2.currentText()
ISLEMGOSTER(argu)
ui.combo_coins.setVisible(True)
def goster(): #coin adı seçildiğinde çağrılıyor alım ekranında
ui.ln_miktar.setVisible(True)
ui.ln_alisfiyat.setVisible(True)
ui.ln_toplamodenen.setVisible(True)
ui.ln_birimmaliyet.setVisible(True)
ui.btn_aliskaydet.setVisible(True)
borsaadi = ui.combob_borsa.currentText()
coinadi = ui.combo_coin.currentText()
#ISLEMGOSTER(borsaadi)
#filtrele(borsaadi, coinadi)
def goster2(): #coin adı seçildiğinde çağrılıyor satım ekranında
ui.ln_miktars.setVisible(True)
ui.ln_satisfiyat.setVisible(True)
ui.ln_toplamodenens.setVisible(True)
ui.ln_karzarars.setVisible(True)
ui.btn_satiskaydet.setVisible(True)
borsaadi = ui.combob_borsa_2.currentText()
coinadi = ui.combo_coins.currentText()
#ISLEMGOSTER(borsaadi)
#filtrele(borsaadi, coinadi)
# ______________________________deneme amaçlı___________________________#
# ____________________________________________________________________#
def ozetle(borsaadi,*args): #işlemgösterde çağrılıyor
tablolanacakliste = []
#seçilen borsadaki coin işlemlerinden süzerek eldeki coinleri bir liste haline getiriyoruz
for i in args:
curs.execute(f'SELECT * FROM {borsaadi} WHERE coin="{i}"')
conn.commit()
#İLGİLİ BORSADAN COİN COİN SEÇİP SORGULUYORUZ ve maliyet güncel fiyat ederi ve karzara durumlarını hesaplıyoruz
miktar = 0
kasa = 0
for satirindex, satirveri in enumerate(curs):
for sutunindex, sutunveri in enumerate(satirveri):
if sutunindex == 4:
miktar += float(sutunveri)
if sutunindex == 9:
kasa += float(sutunveri)
maliyet=0
try:
maliyet = abs(kasa / miktar)
maliyet = round(maliyet, 5)
except:
pass
toplamodenen= maliyet * miktar
toplamodenen=round(toplamodenen,4)
coinadded = i+"USDT"
guncel = getprice(coinadded)
gunceleder= float(guncel) * miktar
gunceleder=round(gunceleder,4)
karzarar= gunceleder - kasa
karzarar=round(karzarar,4)
yuzde=0.0
try:
yuzde= 100*karzarar/abs(kasa)
except:
pass
yuzde=round(yuzde,2)
liste=[ i, miktar, maliyet,toplamodenen,guncel,gunceleder, karzarar,yuzde, kasa]
#elde bulunan coinlerin tüm güncel bilgilerini bir listeye ekliyoruz
tablolanacakliste.append(liste)
#ui.lb_borsaadi.clear()
ui.lb_genel1.clear()
ui.lb_genel2.clear()
ui.tblwd_alimsatimozet.clear()
#alım satım özet tablosuna tablonacaklarliste verisini yazdırıyoruz
ui.tblwd_alimsatimozet.setHorizontalHeaderLabels(
("COİN", "ELDEKİ MİKTAR", "MALİYET", "TOPLAM ÖDENEN", "GÜNCEL FİYAT",
"GÜNCEL EDER", "KARZARAR", "YUZDE", "KASA"))
ui.tblwd_alimsatimozet.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
gosterilecekkasa=0.0
gosterilecekgunceleder=0.0
for satirindeks, satir_veri in enumerate(tablolanacakliste):
for sutunindeks, sutun_veri in enumerate(satir_veri):
ui.tblwd_alimsatimozet.setItem(satirindeks, sutunindeks, QTableWidgetItem(str(sutun_veri)))
if sutunindeks==8:
gosterilecekkasa+= float(sutun_veri)
if sutunindeks==5:
gosterilecekgunceleder+= float(sutun_veri)
gosterilecekkasa = round(abs(gosterilecekkasa),2)
gosterilecekgunceleder= round(gosterilecekgunceleder,2)
gosterilecekkarzarar= round(gosterilecekgunceleder-gosterilecekkasa,2)
ui.lb_genel1.setText(str(gosterilecekkasa))
ui.lb_genel2.setText(str(gosterilecekgunceleder))
ui.label_17.setText(str(gosterilecekkarzarar))
gosterilecekyuzde=0.0
try:
gosterilecekyuzde=(100*(gosterilecekgunceleder-abs(gosterilecekkasa)))/abs(gosterilecekkasa)
except:
pass
gosterilecekyuzde = round(gosterilecekyuzde,2)
ui.label_dolaryuzde.setText(str(gosterilecekyuzde))
# ______________________________GRAFİK OLUŞTURMA DENEMELERİ___________________________#
# ____________________________________________________________________________________#
def create_piechart(self):
# Binance =250$ , Gateİo =700$, Huobi =300$, Bitfinex=180$, BtcTürk=600$
series = QtChart.QPieSeries()
series.append("Binance", 250)
series.append("CGateİo", 700)
series.append("Huobi", 300)
series.append("Bitfinex", 180)
series.append("BtcTürk", 600)
series.setLabelsVisible(True)
series.setLabelsPosition(QtChart.QPieSlice.LabelInsideHorizontal)
for slice in series.slices():
slice.setLabel("{:.2f}%".format(100 * slice.percentage()))
chart = QChart()
chart.addSeries(series)
chart.createDefaultAxes()
chart.setAnimationOptions(QChart.SeriesAnimations)
chart.setTitle("Financial Percentage Budget")
chart.legend().setVisible(True)
chart.legend().setAlignment(Qt.AlignBottom)
chart.legend().markers(series)[0].setLabel("Binance")
chart.legend().markers(series)[1].setLabel("CGateİo")
chart.legend().markers(series)[2].setLabel("Huobi")
chart.legend().markers(series)[3].setLabel("Bitfinex")
chart.legend().markers(series)[4].setLabel("BtcTürk")
chartview = QChartView(chart)
chartview.setRenderHint(QPainter.Antialiasing)
ui.centralwidget(chartview)
# ______________________________SİNYAL SLOT___________________________#
# ____________________________________________________________________#
ui.btn_aktar.clicked.connect(AKTAR)
ui.combob_nereden.activated.connect(ilk)
ui.combob_nereye.activated.connect(iki)
ui.combob_borsa.activated.connect(islemlistesialim)
ui.combob_borsa_2.activated.connect(islemlistesisatim)
ui.combo_coin.activated.connect(goster)
ui.combo_coins.activated.connect(goster2)
ui.btn_aliskaydet.clicked.connect(ALIM)
ui.btn_satiskaydet.clicked.connect(SATIM)
sys.exit(Uygulama.exec_())
Aslında aradığım cevap şu :
1-resimde gösterdiğin yere ŞuWidget i koyman gerekiyor.
2- kod sayfazında grafik için gerekli hazırlıkları yaptıktan sonra
yani
def create_piechart(self):
# Binance =250$ , Gateİo =700$, Huobi =300$, Bitfinex=180$, BtcTürk=600$
series = QtChart.QPieSeries()
series.append("Binance", 250)
series.append("CGateİo", 700)
series.append("Huobi", 300)
series.append("Bitfinex", 180)
series.append("BtcTürk", 600)
series.setLabelsVisible(True)
series.setLabelsPosition(QtChart.QPieSlice.LabelInsideHorizontal)
for slice in series.slices():
slice.setLabel("{:.2f}%".format(100 * slice.percentage()))
chart = QChart()
chart.addSeries(series)
chart.createDefaultAxes()
chart.setAnimationOptions(QChart.SeriesAnimations)
chart.setTitle("Financial Percentage Budget")
chart.legend().setVisible(True)
chart.legend().setAlignment(Qt.AlignBottom)
chart.legend().markers(series)[0].setLabel("Binance")
chart.legend().markers(series)[1].setLabel("CGateİo")
chart.legend().markers(series)[2].setLabel("Huobi")
chart.legend().markers(series)[3].setLabel("Bitfinex")
chart.legend().markers(series)[4].setLabel("BtcTürk")
chartview = QChartView(chart)
chartview.setRenderHint(QPainter.Antialiasing)
bu grafiğin eklemiş olduğun ŞuWidget içinde görünmesi için
ui.ŞuWidget.O_widgetinFalancaÖzelliği(chartview)
#veya nasıl bir komut ile o işlem sağlanacak ise
diyerek grafiğin orada görünmesini sağlayabilirsin gibi bir cevap arıyorum.
not: bütün bunları yazarken baktımda derdimi anlatmak konusunda daha çok çalışmam gerek galiba
Bir layout oluşturup o layouta grafik widgetını atayıp yapabilirisiniz
lay = QHBoxLayout()
lay.addWidget(chartview)
ui.ŞuWidget.setLayout(lay)
Tüm kod:
from PyQt5 import QtChart
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QHBoxLayout
import sys
from PyQt5.QtChart import QChart, QChartView
from PyQt5.QtGui import QPainter,QColor, QPalette
from PyQt5.QtCore import Qt
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQtChart Pie Chart")
self.setGeometry(100, 100, 800, 600)
self.show()
self.ekran()
def create_piechart(self):
# Binance =250$ , Gateİo =700$, Huobi =300$, Bitfinex=180$, BtcTürk=600$
series = QtChart.QPieSeries()
series.append("Binance", 250)
series.append("CGateİo", 700)
series.append("Huobi", 300)
series.append("Bitfinex", 180)
series.append("BtcTürk", 600)
series.setLabelsVisible(True)
series.setLabelsPosition(QtChart.QPieSlice.LabelInsideHorizontal)
for slice in series.slices():
slice.setLabel("{:.2f}%".format(100 * slice.percentage()))
chart = QChart()
chart.addSeries(series)
chart.createDefaultAxes()
chart.setAnimationOptions(QChart.SeriesAnimations)
chart.setTitle("Financial Percentage Budget")
chart.legend().setVisible(True)
chart.legend().setAlignment(Qt.AlignBottom)
chart.legend().markers(series)[0].setLabel("Binance")
chart.legend().markers(series)[1].setLabel("CGateİo")
chart.legend().markers(series)[2].setLabel("Huobi")
chart.legend().markers(series)[3].setLabel("Bitfinex")
chart.legend().markers(series)[4].setLabel("BtcTürk")
chartview = QChartView(chart)
chartview.setRenderHint(QPainter.Antialiasing)
return chartview
def ekran(self):
widget1 = QWidget()
widget1.setStyleSheet("background-color: rgb(255, 0, 0);")
widget1.setFixedSize(500, 500)
widget2 = QWidget()
widget2.setStyleSheet("background-color: rgb(0, 0, 255);")
widget2.setFixedSize(500, 500)
chw = self.create_piechart()
lay = QHBoxLayout()
lay.addWidget(chw)
widget2.setLayout(lay)
lay = QHBoxLayout()
lay.addWidget(widget1)
lay.addWidget(widget2)
cwidget = QWidget()
cwidget.setLayout(lay)
self.setCentralWidget(cwidget)
if __name__ == '__main__':
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
Çok teşekkür ediyorum. Aradığım tam da buydu `
tekrar teşekkür ediyorum. Son bir sorum daha olacak çok olmazsam. Bu grafiği excell in grafikleri gibi daha güzel görünür bir hale getirebiliyormuyuz 3D gibi.
Benim kodum sizin 2.sorunuza cevap veriyor ilk sorduğunuz sorunun cevabını yani gönderinin asıl amacının çözümünü semtex atmış benim kodun büyük çoğunluğu da zaten onun kodundan alıntı. Aynı soruyu soran başka insanlarında cevaba ulaşması için bence çözüm semtexin gönderisinde olmalıydı benim kodda da cevap bulunuyor bulunmasına da kod aslen semtexin .
3D ye gelirsem yapabildim ama hem exceldekinin aynısı olmadı hem de benimkinden çok çok daha kolay bir yol vardır yanlış bir yol göstermeyim diye paylaşmıyorum yani ben baya dolandırdım bir kütüphaneden grafiği elde ediyorum grafiği sonra başka bir kütüphane ile kırpıyor en son olarak bu grafiğin resmini bir widgetta adama sunuyor eminim başka bir kütüphane ile daha kolay yolu vardır.
Tabiki Semtex in katkılarıda çok değerli ve kodun büyük kısmını oluşturuyor. Benim takıldığım nokta olarakda sizin kodunuzda çok değerli bir katkı sundu. Burada yardımda bulunan herkese çok teşekkür ediyorum. Hem Semtex e hem size