ChatGPT ve Python ile Dinamik Bir Dashboard Uygulaması Geliştirme

Deniz Özerden Öztürk
turkcell
Published in
4 min readDec 24, 2023
<a href=”https://storyset.com/business">Business illustrations by Storyset</a>
Kaynak: <a href=”https://storyset.com/business">Business illustrations by Storyset</a>

Python, geniş bir kütüphane yelpazesiyle güçlü bir programlama dilidir ve masaüstü uygulamaları geliştirmek için birçok araç sunar. Bu makalede, Python kullanarak ve ChatGPT’den destek alarak, dinamik bir dashboard uygulaması yazmayı öğreneceğiz.

ChatGPT Promptu

“Python kullanarak bir kullanıcı ara yüzü oluşturabilir misin? Uygulama, url.txt dosyasında JSON formatında bulunan isimleri otomatik olarak butonlara yerleştirecek ve her bir butona basıldığında ilgili URL’yi açacak bir dashboard arayüzü olmalı. Ayrıca, url.txt dosyasını açıp güncelleyebileceğimiz bir buton da olmalı.”

ChatGPT Cevabı

Evet, Python kullanarak basit bir kullanıcı arayüzü (GUI) oluşturabiliriz. PyQt5 kütüphanesini kullanarak bu işlemi gerçekleştirebiliriz. İlk olarak, PyQt5'ı yüklemeniz gerekecek. Aşağıdaki komutu kullanarak PyQt5'ı yükleyebilirsiniz:

pip install PyQt5

Ardından, aşağıdaki örnek kodu kullanarak istediğiniz GUI uygulamasını oluşturabilirsiniz. Bu örnekte, url.txt dosyasındaki JSON verilerini okuyarak butonlar oluşturulacak ve her bir butona tıklandığında ilgili URL açılacaktır. Ayrıca, dosyayı açıp güncelleyebileceğiniz bir buton da eklenmiştir

import json
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QTextEdit, QFileDialog
class DashboardApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.layout = QVBoxLayout()
# Dosyayı Aç ve Güncelle Butonu
self.openFileBtn = QPushButton('Dosyayı Aç ve Güncelle', self)
self.openFileBtn.clicked.connect(self.openFile)
self.layout.addWidget(self.openFileBtn)
# URL'leri Gösteren Butonlar
self.urlButtons = []
self.loadUrls()
self.layout.addStretch()
self.setLayout(self.layout)
self.setGeometry(300, 300, 400, 300)
self.setWindowTitle('Dashboard App')
self.show()
def loadUrls(self):
try:
with open('url.txt', 'r') as file:
data = json.load(file)
for name, url in data.items():
btn = QPushButton(name, self)
btn.clicked.connect(lambda _, u=url: self.openUrl(u))
self.urlButtons.append(btn)
self.layout.addWidget(btn)
except FileNotFoundError:
print("url.txt not found.")
def openUrl(self, url):
print(f"Opening URL: {url}") # Burada gerçek URL'yi açabilirsiniz.
def openFile(self):
options = QFileDialog.Options()
options |= QFileDialog.ReadOnly
fileName, _ = QFileDialog.getOpenFileName(self, "Dosya Aç", "", "JSON Files (*.json);;All Files (*)", options=options)
if fileName:
try:
with open(fileName, 'r') as file:
data = json.load(file)
with open('url.txt', 'w') as urlFile:
json.dump(data, urlFile, indent=2)
self.clearLayout()
self.loadUrls()
except Exception as e:
print(f"Error opening file: {e}")
def clearLayout(self):
for i in reversed(range(self.layout.count())):
widget = self.layout.takeAt(i).widget()
if widget is not None:
widget.setParent(None)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = DashboardApp()
sys.exit(app.exec_())

Bu örnek uygulama, PyQt5 kullandığından, PyQt5'ın yüklü olması gerekmektedir. Önce PyQt5'ı yükleyin ve ardından yukarıdaki Python kodunu bir dosyaya yapıştırın ve çalıştırın. url.txt dosyasını açarak JSON verilerinizi girebilir ve dosyayı güncelleyebilirsiniz. Uygulama, her butona tıklandığında ilgili URL’yi açacak şekilde tasarlanmıştır.

Hemen ardından, Python editörde kodu yapıştırıp, gerekli kütüphaneyi terminalden yükleyip denedim. url.txt dosyasının formatını da ChatGPT’den istedim.

url.txt Formatı (ChatGPT Cevabı)

url.txt dosyanızdaki JSON formatı aşağıdaki gibi olabilir:

{
"Site 1": "https://www.site1.com",
"Site 2": "https://www.site2.com",
"Site 3": "https://www.site3.com"
}

Bu formatı kullanarak url.txt dosyanızı oluşturabilir ve güncelleyebilirsiniz.

Fakat url.txt dosyasını değiştirmeme rağmen maalesef butona basınca URL’ler açılmadı. Bu aşamadan sonra kod başarı ile çalışana kadar 5 kere hala açılmıyor yazmak zorunda kaldım. Ama altıncısında son çalışan kodu başarıyla döndü.

ChatGPT Cevabı

Özür dilerim, yaşadığınız sorunun çözümü için başka bir yaklaşım deneyelim. Bu sefer, QDesktopServices kullanarak varsayılan web tarayıcınızı açmak için bir fonksiyon ekleyelim. Aşağıda güncellenmiş bir örnek bulabilirsiniz:

import json
import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QFileDialog, QDesktopWidget
from PyQt5.QtGui import QDesktopServices
class DashboardApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.layout = QVBoxLayout()
# Dosyayı Aç ve Güncelle Butonu
self.openFileBtn = QPushButton('Dosyayı Aç ve Güncelle', self)
self.openFileBtn.clicked.connect(self.openFile)
self.layout.addWidget(self.openFileBtn)
# URL'leri Gösteren Butonlar
self.urlButtons = []
self.loadUrls()
self.layout.addStretch()
self.setLayout(self.layout)
self.setGeometry(300, 300, 800, 600)
self.setWindowTitle('Dashboard App')
self.show()
def loadUrls(self):
try:
with open('url.txt', 'r') as file:
data = json.load(file)
for name, url in data.items():
btn = QPushButton(name, self)
btn.clicked.connect(lambda _, u=url: self.openUrl(u))
self.urlButtons.append(btn)
self.layout.addWidget(btn)
except FileNotFoundError:
print("url.txt not found.")
def openUrl(self, url):
QDesktopServices.openUrl(QUrl(url))
def openFile(self):
options = QFileDialog.Options()
options |= QFileDialog.ReadOnly
fileName, _ = QFileDialog.getOpenFileName(self, "Dosya Aç", "", "JSON Files (*.json);;All Files (*)", options=options)
if fileName:
try:
with open(fileName, 'r') as file:
data = json.load(file)
with open('url.txt', 'w') as urlFile:
json.dump(data, urlFile, indent=2)
self.clearLayout()
self.loadUrls()
except Exception as e:
print(f"Error opening file: {e}")
def clearLayout(self):
for i in reversed(range(self.layout.count())):
widget = self.layout.takeAt(i).widget()
if widget is not None:
widget.setParent(None)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = DashboardApp()
sys.exit(app.exec_())

Bu kod, QDesktopServices.openUrl(QUrl(url)) kullanarak varsayılan web tarayıcınızda belirtilen URL'yi açacaktır. Eğer bu da işe yaramazsa, başka bir durumu değerlendirmek için daha fazla bilgiye ihtiyacımız olabilir.

url.txt Dosyasının Örnek İçeriği (ChatGPT Cevabı)

{
"Google": "https://www.google.com",
"Turkcell": "https://www.turkcell.com.tr",
"Toplanti Odami Aç": "https://turkcell.conference.istesuit.com"
}

Kullanıcı arayüzünün görüntüsü ise şöyle oldu:

Not: Resmi buraya yapıştırırken kenarlarından biraz küçülttüm. Ekran boyutlarının sadece buton içeriklerini sığdıracak minimum boyutta olmasını da ChatGPT’den isteyebilir ve güncelleyebilirsiniz.

ChatGPT, Python kullanarak dashboard uygulamaları yazmak için yeni ve heyecan verici bir yol sunuyor. Bu uygulama, kullanıcıların verilerini daha etkili bir şekilde görüntülemesine ve analiz etmesine yardımcı olabilir.

--

--