PyQT4 i QTDesigner - Wprowadzenie

Tworzenie aplikacji w PyQT4 może przebiegać na kilka sposobów. Najczęściej jednak wykorzystuje się QTDesignera - aplikację dostarczaną wraz z QT służącą do graficznego "rysowania" interfejsu. Za jego pomocą w łatwy sposób rozmieścimy elementy (widżety, widgety) oraz nadanym im nazwy umożliwiające łatwe odwoływanie się do nich w kodzie. Przebieg tworzenia aplikacji wygląda mniej więcej tak:
  • Stworzenie interfejsu w QTDesigner
  • Nadanie pasujących nazw dla widżetów, oraz ich wstępna konfiguracja (QTDesigner)
  • Wygenerowanie za pomocą pyuic4 klasy opisującej interfejs
  • Wywołanie aplikacji z wykorzystaniem wygenerowanej klasy interfejsu
  • Rozszerzenie klasy interfejsu o własne sloty
  • By dowiedzieć się co można zrobić z danym widżetem (np. jak dodać tekst do okna "textEdit") wystarczy sprawdzić listę metod w dokumentacji.

Niniejszy artykuł zaprezentuje bardzo prostą aplikację PyQT4 opartą o interfejs stworzony w QT Designerze. Po uruchomieniu QT Designera pojawi się menu startowe umożliwiające wybranie bazowego komponentu:
pyqt4_1
Najprostszy jest Widget, który da nam samo okno. Wybieramy je i z menu po lewej przeciągamy na nie przycisk Push Button, możemy dopasować rozmiar przycisku do rozmiaru okna:
pyqt4_2
Prawe-Kliknięcie myszy nad przyciskiem wyświetli menu tego elementu. Będziemy mogli zmienić tekst jaki wyświetlany jest na przycisku.
pyqt4_3
Gdy "interfejs" jest gotowy musimy połączyć syngał kliknięcia w przycisk z slotem zamykającym okno. W tym celu w górnym menu Designera przełączamy się w tryb edycji Sygnałów i Slotów:
pyqt4_6
By połączyć sygnał przycisku ze slotem okna wystarczy najechać na przycisk, wcisnąć lewy klawisz myszy i przeciągnąć kursor na okno. Przy kursorze powinniśmy widzieć czerwone kreski (jakby symbol uziemienia):
pyqt4_5
Puszczamy klawisz myszy. Pojawi się okno sygnałów przycisku i slotów okna:
pyqt4_4
Wybieramy sygnał clicked() i slot close - nazwy mówią same ze siebie. Teraz wystarczy zapisać GUI jako np. test.ui. W terminalu przejdź do katalogu z plikiem *ui i wykonaj polecenie:
pyuic4 test.ui > test_ui.py
Stwórz plik test.py o kodzie:
import sys
from PyQt4 import QtCore, QtGui

from test_ui import Ui_Form


class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = MyForm()
    myapp.show()
    sys.exit(app.exec_())
I wykonaj go:
python test.py
Pojawi się nasza aplikacja z przyciskiem. Po jego naciśnięciu aplikacja zostanie zamknięta.

Uwagi

Ui_Form to nazwa klasy wygenerowanej przez pyuic4 i pochodzi od nazwy głównego widgeta okna naszej aplikacji. Nazwę można ustawić w QT Designerze (zaznaczyć okno i w menu po prawej ustawić wartość dla objectName:
pyqt4_7
Zaprezentowany kod test.py jest uniwersalny jeżeli chodzi o uruchamianie aplikacji wygenerowanych za pomocą pyuic4 (z uwzględnieniem możliwej zmiany nazwy klasy).
RkBlog

PyQt, 14 July 2008

Comment article
Comment article RkBlog main page Search RSS Contact