PyQt ile Toplama İşlemi

Anam ağladı şu saate kadar uyumadım. Sonra gittim yürüyüş falan yaptım, hala ayaktayım blog’a yazı yazıyorum. Sonunda Qt ile bir şey yazabildim. Kendi hatalarım yüzünden çok uğraştım ama sonunda başardım. Efendim şimdi kısaca ne yaptık anlatalım. Öncelikle Qt Designer ile tasarımı yaptık. MainWindow penceresine(adı ana pencere zzz) iki lineEdit nesnesi, iki pushButton nesnesi bir de label ekledim. Qt Designer de iken F4 tuşuna basarak sinyal çıkardım sonra dosyayı kaydettim. Ui uzantısıyla kaydediyor tabi bu işimize yaramıyor pyuic4 dosyaadı.ui -o(osmaniyenin o su sıfır değil) dosyadı.py komutuyla dosyamızı py uzantılı bir şekle soktuk. Sonra herhangi bir metin editörüyle açıp düzenlemeye başladık. Öncelike sinyalleri ayarlamak gerek. Sinyal mantığı şu:
obje, sinyal, slot. Slot dediği uygulanacak fonksiyon callback gibi bir şey. self.add ve self.close düzenlemesinin ardından close ve add fonksiyonlarını tanımladım. lineEdit nesnesinden girilen veriyi lineEdit.text() fonksiyonuyla alıyoruz. Bu aldığımız veriyi num1’e aktarmışım göründüğü üzere. Sonra bu num1’i int yani sayı değişkeni olarak alıp int(num1) diğer değişkenle topluyor ardından label nesnesine yazdırmak üzere yolluyoruz. label’a bir şey yazdırmak için label.setText() fonksiyonunu kullanıyoruz. Normalde burda bir “text” yazıldığı için sayı yazmaya çalıştığınızda sorun çıkarıyor, onu da str(result) şeklinde sonucumuzu string’e çevirerek hallediyoruz. Diğer close fonksiyonu sys.exit() ile programı kapıyor anlatılacak bir şey yok. Son olarak app = … diye giden satırları eklememiz gerekiyor ui dosyasını python dosyasına çevirdiğimizde sadece arayüzü çevirmiş oluyoruz, son kodlarla uygulama çalışabilir bir hale geliyor. Uğraştırdı ama hallettik sırada ne var büyüklerimize soracağız.





# -*- coding: utf-8 -*-
#!usr/bin/env python
# -*- coding: utf-8 -*-
#Developed by Ceyhun Alyeşil([email protected])
#http://devador.blogspot.com

from PyQt4 import QtCore, QtGui
import sys

class Ui_MainWindow():
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(267, 236)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.lineEdit = QtGui.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(10, 30, 113, 20))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(140, 30, 113, 20))
self.lineEdit_2.setObjectName("lineEdit_2")
self.label = QtGui.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(110, 140, 46, 14))
self.label.setObjectName("label")
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(50, 80, 75, 24))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtGui.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(150, 80, 75, 24))
self.pushButton_2.setObjectName("pushButton_2")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 267, 19))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.add)
QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL("clicked()"), self.close)

QtCore.QMetaObject.connectSlotsByName(MainWindow)

def close(self):
sys.exit()
def add(self):
num1=self.lineEdit.text()
num2=self.lineEdit_2.text()
result=int(num1)+int(num2)
self.label.setText(str(result))
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("MainWindow", "TextLabel", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "topla", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", "cikis", None, QtGui.QApplication.UnicodeUTF8))

app = QtGui.QApplication(sys.argv)
window = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(window)

window.show()
sys.exit(app.exec_())