Bu bölümde ufak bir uygulamaya yapmaya başlıyoruz. İlk önce arayüzü tasarlayarak işe koyulacağız. Yapmak istediğimiz program, bir indirme yöneticisi.
Line edit’e girilen URL’den bir dosya indirmeye çalışacağız. Dosyanın indirme durumu progress bar ile kullanıcıya bildirilecek. Ayrıca kullanıcı dosyayı indireceği konumu seçebilecek ve indirme tamamlandığı zaman kullanıcıya bir mesaj gösterilecek. Hata durumlarında da aynı şekilde kullanıcıya dönüt verilecek.
from PyQt4.QtCore import * from PyQt4.QtGui import * import sys class Downloader(QDialog): def __init__(self): QDialog.__init__(self) layout = QVBoxLayout() url = QLineEdit() save_location = QLineEdit() progress_bar = QProgressBar() download_button = QPushButton("İndir") layout.addWidget(url) layout.addWidget(save_location) layout.addWidget(progress_bar) layout.addWidget(download_button) self.setLayout(layout) app = QApplication(sys.argv) dialog = Downloader() dialog.show() app.exec_()
Basit ama son kullanıcı için hiçbir anlamı olmayan arayüzümüz hazır. Biraz daha anlamlandırmak için birkaç ekleme daha yapmamız gerekecek.
Öncelikle dialog penceresindeki başlığı (downloader.py) düzenleyerek başlayalım. Bunun için setWindowTitle()
metodunu kullanacağız.
Line editlerimizi de daha anlamlı kılmak için place holder yerleştiriyoruz. Bunun için de setPlaceholderText()
metodunu kullanacağız.
Dialog penceremiz ilk açıldığı zaman otomatik olarak ilk line edit’e focus yapıyor. İlk açıldığı zaman herhangi bir focus olmamasını sağlayacağız. Bunun için setFocus()
metodunu kullanmamız gerek.
Son olarak progress bar’ı da daha açıklayıcı bir hale getireceğiz. Yüzdelik bilgisini kullanıcıya sunacağız ve bunun için de setValue()
metodunu kullanacağız.
Tüm bunlardan sonra aşağıdaki gibi dialog penceremiz olacak.
Linux Mint, varsayılan olarak yüzdelik değerini (0%) progress bar’a yatay olarak ortaladı. Farklı işletim sistemlerinie göre yüzdelik değerin varsayılan konumu değişebilir. Progress bar’ın ortasında yüzdelik değeri göstermek için setAlignment(Qt.AlignHCenter)
metodunu kullananabiliriz.
from PyQt4.QtCore import * from PyQt4.QtGui import * import sys class Downloader(QDialog): def __init__(self): QDialog.__init__(self) layout = QVBoxLayout() url = QLineEdit() save_location = QLineEdit() progress_bar = QProgressBar() download_button = QPushButton("İndir") url.setPlaceholderText("URL") save_location.setPlaceholderText("Dizin") progress_bar.setValue(0) progress_bar.setAlignment(Qt.AlignHCenter) layout.addWidget(url) layout.addWidget(save_location) layout.addWidget(progress_bar) layout.addWidget(download_button) self.setLayout(layout) self.setWindowTitle("DOWNLOADER") self.setFocus() app = QApplication(sys.argv) dialog = Downloader() dialog.show() app.exec_()
Celery ile alakalı "best practice"leri ve faydalı araçları bir araya getiren güzel bir checklist'e denk…
Diziler en temel ve sık kullandığımız araçlardan... Kod yazarken işimizi kolaylaştıracak, daha temiz kod yazmamızı…
listve tuple bilginizi test etmek ister misiniz? realpython.com da keşfettiğim ve Türkçe'ye çevirdiğim mini teste…
Rehberlik sağlaması ve bilgi tazelemesi açısından faydalı olduğunu düşündüğüm bir Toptal blog paylaşımınıTürkçe'ye çevirdim.Devamını okuyunBilmeniz…
Angular componentlerine console üzerinden hızlıca erişmek için kullanılan bir teknik. Unutmamak için kendime not düşüyorum.Devamını…
Geçtiğimiz günlerde keşfettiğim ve oldukça da hoşuma giden repoyu paylaşmak istiyorum: lydiahallie/javascript-questions Genel olarak temel…