RkBlog

Hardware, programming and astronomy tutorials and reviews.

Tworzenie interfejsów graficznych w QtDesigner dla aplikacji PyQt4

Qt Designer to aplikacja dostarczana wraz z biblioteką Qt służąca do tworzenia interfejsów użytkownika naszych aplikacji. Za pomocą przeciągania widżetów z dostępnej palety możemy umieścić wszystkie potrzebne elementy. Co ważne możemy także zadbać o rozmieszczenie poszczególnych widżetów za pomocą szablonów (Layouts), jak i o nadanie etykiet i domyślnych ustawień poszczególnym widgetom. W tym artykule opiszę tworzenie proste interfejsu prezentującego proces poprawnego tworzenia interfejsu w QtDesignerze.

W przypadku Windowsa QtDesigner będzie dostępny po zainstalowaniu PyQt4. W przypadku Linuksa będzie w pakiecie Qt, lub np. w przypadku Ubuntu, które stosuje rozbite pakiety - jako oddzielny pakiet (szukaj "designer").

Tworzenie interfejsu w QtDesigner

Naszym celem będzie stworzenie prostej aplikacji, która będzie startowała pasek postępu przyrastający co sekundę:
pyqtdes10
Trzy przyciski QPushButton (Start, Stop, Exit) odpowiednio do uruchamiania i zatrzymywania paska postępu, oraz do zamykania aplikacji. Do tego jeden QProgressBar.

Oprogramowanie interfejsu

Zakładam że przerobiłeś już pierwsze tutoriale opisujące podstawy programowania w PyQt4. Zaczynamy od wygenerowania klasy Pythona z pliku UI:
pyuic4 counter.ui > counter.py
Następtnie tworzymy plik run.py z takim oto szkieletowym kodem:
# -*- coding: utf-8 -*-
import sys

from PyQt4 import QtCore, QtGui
from counter import Ui_CounterWindow

class MyCounter(QtGui.QWidget):
	def __init__(self, parent=None):
		QtGui.QWidget.__init__(self, parent)
		self.ui = Ui_CounterWindow()
		self.ui.setupUi(self)

if __name__ == "__main__":
	app = QtGui.QApplication(sys.argv)
	myapp = MyCounter()
	myapp.show()
	sys.exit(app.exec_())
Gdzie from counter import Ui_CounterWindow to import klasy naszego okna z pliku counter.py. Otwierając ten plik zdobędziemy nazwę klasy (Ui_CounterWindow w tym przypadku). Będzie to nazwa wg. schematu "Ui_etykietaOkna". Uruchom plik run.py - powinno wyświetlić się okno.

Kod źródłowy

RkBlog

PyQt, 19 October 2009, Piotr Maliński

Comment article