Mega tutorial, kompletny kalkulator w Pythonie, przerób to sobie na Javę :D
# -*- coding: utf-8 -*-
# import modulow zawierajacych obsluge Qt
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_MainWindow(object): # klasa okna wygenerowana przez pyuic
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(218, 147)
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(60, 70, 99, 27))
self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "PushButton", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.lineEdit = QtGui.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(12, 10, 191, 28))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 218, 26))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
pass
# import wszystkich funkcji z modulu math
from math import *
# import modulu potrzebnego do zakoncznia aplikacji
import sys
# definicja klasy dziedziczacej po klasie otrzymanej
# z narzedzia pyuic
class MainWindow(Ui_MainWindow):
# nadpisanie metody setupUi
def setupUi(self,MainWindow):
# wywolanie funkcji setupUi z klasy rodzica
Ui_MainWindow.setupUi(self,MainWindow)
# przypisanie sygnalu klikniecia przycisku
# do metody oblicz
QtCore.QObject.connect(self.pushButton,
QtCore.SIGNAL("clicked()"), self.oblicz)
def oblicz(self):
# pobranie tekstu zawierajacego wyrazenie matematyczne
# z kontrolki LineEdit
wyrazenie=str(self.lineEdit.text())
try:
# sprytna metoda na wykonywanie wyrazen matematycznych
# wpisywanych przez uzytkownika
exec( "wynik=%s"%(wyrazenie) )
except:
# jesli wystapi blad, wynikiem jest slowo error
wynik="error"
# wpisanie wyniku operacji do kontrolki LineEdit
self.lineEdit.setText(str(wynik))
#rutyna niezbędną do uruchomienia aplikacji:
class Aplikacja(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = MainWindow()
self.ui.setupUi(self)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = Aplikacja()
myapp.show()
sys.exit(app.exec_())
Obsługuje wszystkie funkcje z modułu math: degrees, radians, sin, cos, atan2 itd. Można wprowadzać całe wyrażenia, potęgowanie realizuje się operatorem **, można łatwo rozszerzyć o funkcje numpy (wystarczy zaimportować je gdzieś w kodzie :D ).
<image></image>