PyQt je jednou z nejoblíbenějších knihoven pro vytváření grafických rozhraní v programovacím jazyce Python. Poskytuje možnost vytvářet výkonná a krásná uživatelská rozhraní pomocí mnoha widgetů a funkcí.
1. Nejprve je nutné modul importovat PyQt5 do svého skriptu:
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
2. Vytvořte instanci třídy QApplication, který je hlavním předmětem aplikace:
3. Vytvořte instanci třídy QWidget pro vytvoření okna:
window = QWidget () label = QLabel ('Ahoj, světe!', parent=window)
5. Nastavte rozměry okna:
6. Zobrazit okno:
7. Nakonec spusťte hlavní cyklus aplikace:
Nyní máte základní znalosti, jak odvodit data pyqt. Použijte je k vytvoření působivých grafických rozhraní ve vašich aplikacích pomocí této výkonné knihovny.
-
Importujte potřebné moduly:
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabelimport sys
class MyApp(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):# дополнительный код
# пример создания метки QLabellabel = QLabel('Привет, мир!', self)label.move(50, 50) # перемещение меткиlabel.adjustSize() # изменение размера метки в соответствии с содержимым# дополнительный код
self.setGeometry(100, 100, 300, 200) # x, y, width, heightself.setWindowTitle('Мое приложение')self.show()
if __name__ == '__main__':app = QApplication(sys.argv)ex = MyApp()sys.exit(app.exec_())
Instalace PyQt
Chcete-li začít s PyQt, musíte nainstalovat tento rámec. Zde je návod krok za krokem:
- Otevřete příkazový řádek nebo terminál.
- Ujistěte se, že máte nainstalovaný Python. Zadejte příkaz python --version a zkontrolujte verzi Pythonu.
- Nainstalujte pip, nástroj pro instalaci Python paketů, pokud jej ještě nemáte. Zadejte příkaz python-m ensurepip --upgrade .
- Nyní nainstalujte PyQt. Pokud chcete použít PyQt6 , zadejte příkaz pip install pyqt5 k instalaci PyQt5 nebo pip install pyqt6.
- Počkejte na dokončení instalace. Ke stažení a instalaci balíčků možná budete potřebovat připojení k internetu.
- Zkontrolujte instalaci zadáním příkazu python na příkazovém řádku a zkuste importovat modul PyQt5 nebo PyQt6 . Pokud nejsou žádné chyby, instalace byla úspěšná.
Vytvoření okna aplikace
Chcete-li začít, musíte importovat modul QtWidgets z knihovny PyQt:
from PyQt5 import QtWidgets
Poté vytvoříme instanci třídy QMainWindow :
app = QtWidgets.QApplication([])window = QtWidgets.QMainWindow()
Chcete-li zobrazit okno aplikace, musíte zavolat metodu show() :
window.show()
Aplikace nyní zobrazí prázdné okno.
Přidání widgetů a rozložení dat
Chcete-li přidat widgety do formuláře, můžete použít metody třídy QMainWindow, jako je setCentralWidget() nebo setMenuBar() k instalaci widgetů ve střední části okna nebo v nabídce.
Pro složitější uspořádání widgetů můžete použít třídy QLayout, jako je QHBoxLayout nebo QVBoxLayout, které vám umožní ovládat horizontální a vertikální uspořádání prvků.
K vytváření tabulek nebo formulářů pro umístění widgetů lze také použít třídy QGridLayout nebo QFormLayout. Pomocí těchto tříd můžete nastavit počet řádků a sloupců tabulky a poté přidat widgety do požadovaných buněk.
Následující tabulka například ukazuje použití QGridLayout pro umístění více widgetů:
| Widget 1 | Widget 2 | Widget 3 |
|---|---|---|
| Text 1 | Text 2 | Text 3 |
Je to jen jeden z mnoha způsobů, jak uspořádat widgety a data v PyQt. Výsledek bude záviset na vašem konkrétním případě použití a požadavcích vaší aplikace.
Nejprve je nutné vytvořit třídu, která bude generovat signály. V této třídě je pak třeba identifikovat techniky-signály, které zahájí přenos dat. Například:
class DataProvider(QObject):dataChanged = pyqtSignal(str)def __init__(self):super().__init__()self.data = ""def get_data(self):return self.datadef set_data(self, value):self.data = valueself.dataChanged.emit(value)
V tomto příkladu má třída DataProvider atribut data, který bude obsahovat data, a metody get_data a set_data pro získání a nastavení hodnoty atributu. Je také definována metoda-datachanged signál,který bude vyvolán při změně dat.
Dále je nutné vytvořit objekt třídy DataProvider a připojit jeho signál ke slotu, který bude zpracovávat data. Například:
class DataReceiver(QWidget):def __init__(self):super().__init__()self.label = QLabel(self)self.label.setGeometry(10, 10, 200, 20)self.dataProvider = DataProvider()self.dataProvider.dataChanged.connect(self.update_data)def update_data(self, value):self.label.setText(value)
Data lze nyní nainstalovat a odvodit vyvoláním metody set_data objektu DataProvider:
data_provider = DataProvider()data_provider.set_data("Hello, PyQt!")
Při volání metody set_data dojde k přenosu dat ze třídy DataProvider do třídy DataReceiver a widget label bude odpovídajícím způsobem aktualizován. Data tak budou úspěšně vyvedena pomocí signálů a slotů.