PyQT bez QTDesignera
14 July 2008
Comments
QTDesigner dobry jest przy rysowaniu widgetów lecz edytor tekstowy ma tragiczny. Również w przypadku złożonych projektów narzędzie to nie jest zbyt przyjazny. Niniejszy tutorial opisuje programowanie z PyQT bez uwzględniania QtDesignera.Oto prosty przykład
import sys
from qt import *
#tworzymy obiekt QAplication
app=QApplication(sys.argv)
#tworzymy widget typu QPushButton
button=QPushButton("Hello World", None)
#przypisujemy przycisk jako główny widget
app.setMainWidget(button)
#wyświetlamy wszystko
button.show()
app.exec_loop()
Oto nieco bardziej rozbudowany przykład:
import sys
from qt import *
#tworzymy klasę dziedziczącą QmainWindow
class HelloWindow(QMainWindow):
def __init__(self, *args):
apply(QMainWindow.__init__, (self,) + args)
#tworzymy przycisk
self.button= QPushButton("Hello World", self)
#i przypisujemy jako główny widget
self.setCentralWidget(self.button)
def main(args):
app=QApplication(args)
win=HelloWindow()
win.show()
#przypisanie sygnału lastWindowClosed() do slotu quit()
app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
app.exec_loop()
if __name__=="__main__":
main(sys.argv)
# -*- coding: utf-8 -*-
import sys
from qt import *
# subklasujemy QDialog
class Form1(QDialog):
def __init__(self,parent = None,name = None,modal = 0,fl = 0):
QDialog.__init__(self,parent,name,modal,fl)
#tworzymy przycisk
self.pushButton1 = QPushButton(self)
self.pushButton1.setText("Kliknij mnie!")
#łączymy slot z własnym sygnałem
self.connect(self.pushButton1,SIGNAL("clicked()"),self.sygnal)
#definiujemy własny sygnał
def sygnal(self):
print "wcisniety przycisk"
def main(args):
app=QApplication(args)
win=Form1()
app.setMainWidget(win)
win.show()
app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
app.exec_loop()
if __name__=="__main__":
main(sys.argv)
Rozmiar widgetów, wiele widgetów w jednym oknie
Oto trochę zmodyfikowany ostatni przykład:# -*- coding: utf-8 -*-
import sys
from qt import *
# subklasujemy QDialog
class Form1(QDialog):
def __init__(self,parent = None,name = None,modal = 0,fl = 0):
QDialog.__init__(self,parent,name,modal,fl)
#tworzymy przycisk
self.pushButton1 = QPushButton(self)
self.pushButton1.setText("Kliknij mnie!")
self.pushButton1.setGeometry(QRect(10,10,200,80))
self.pushButton2 = QPushButton(self)
self.pushButton2.setText("Bla Bla Bla")
self.pushButton2.setGeometry(QRect(10,100,100,80))
#łączymy slot z własnym sygnałem
self.connect(self.pushButton1,SIGNAL("clicked()"),self.sygnal)
#definiujemy własny sygnał
def sygnal(self):
print "wcisniety przycisk"
def main(args):
app=QApplication(args)
win=Form1()
app.setMainWidget(win)
win.show()
app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
app.exec_loop()
if __name__=="__main__":
main(sys.argv)
RkBlog
Comment article