Основният проблем, свързан с тригерите на полето за отметка на Python PyQt5, е, че те не се задействат, когато се щракне върху квадратчето за отметка. Това означава, че всеки код, свързан с квадратчето за отметка, няма да бъде изпълнен, докато не се случи друго действие, като например натискане на бутон или избиране на елемент от менюто. Това може да доведе до объркване и разочарование за потребителите, които очакват кодът да се изпълни незабавно, когато щракнат върху квадратчето.
import sys from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox def on_state_changed(state): if state == Qt.Checked: print('Checkbox is checked!') else: print('Checkbox is unchecked!') app = QApplication(sys.argv) window = QWidget() # Create a checkbox widget and set its caption to 'Do you like Python?' checkbox = QCheckBox('Do you like Python?', window) # Connect the checkbox's stateChanged signal to on_state_changed slot checkbox.stateChanged.connect(on_state_changed) # Show the window and run the app window.show() sys.exit(app.exec())
1. import sys: Това импортира sys модула, който осигурява достъп до някои променливи, използвани или поддържани от интерпретатора, и до функции, които взаимодействат силно с интерпретатора.
2. от PyQt5.QtWidgets импортирайте QApplication, QWidget, QCheckBox: Това импортира три класа от библиотеката на PyQt5 – QApplication, QWidget и QCheckBox – които са необходими за създаване на графичен потребителски интерфейс (GUI).
3. def on_state_changed(state): Това дефинира функция, наречена on_state_changed, която приема един аргумент, наречен състояние.
4. if state == Qt.Checked: Това проверява дали стойността на състоянието е равна на атрибута Checked на Qt (което показва, че има поставена отметка).
5. print('Checkbox is checked!'): Ако условието в ред 4 е вярно, това отпечатва 'Checkbox is checked!'.
6. else: Ако условието в ред 4 е невярно, това изпълнява всеки код, който идва след него, докато не се срещне оператор 'end' или друг оператор 'else'.
7. print('Checkbox is unchecked!'): Ако условието в ред 4 е невярно, това отпечатва 'Checkbox is unchecked!'.
8. app = QApplication(sys.argv): Това създава екземпляр на QApplication със sys argv като негов аргумент (sys argv съдържа всички аргументи от командния ред, предадени на Python).
9 window = QWidget(): Това създава екземпляр на клас джаджи, наречен window, който може да се използва като контейнер за други джаджи, като квадратчета за отметка и бутони и т.н.
10 квадратче за отметка = QCheckBox('Харесваш ли Python?', прозорец): Това създава екземпляр на приспособление за квадратче за отметка с надпис, зададен на 'Харесваш ли Python?' и го добавя към нашия контейнер за прозорци, създаден по-рано в ред 9 по-горе
11 поле за отметка .stateChanged .connect(on_state_changed): Това свързва сигнала на нашите квадратчета за отметка stateChanged (който се излъчва, когато състоянието му се промени) с нашата функция на слота on_state_changed, дефинирана по-рано, така че всеки път, когато състоянието на квадратчетата ни за отметка се промени, тя ще извика нашата функция на слота on_state_changed, предавайки й каквото и да е ново стойност, текущото му състояние също е променено
12 window .show(): Това показва нашия основен прозорец на приложението, съдържащ всички джаджи, които сме добавили преди това
13 sys .exit(app .exec()): Накрая това стартира нашето приложение чрез извикване на метод exec() на обект на приложение, създаден по-рано
Какво е поле за отметка
Квадратчето за отметка в Python е вид приспособление за въвеждане, което позволява на потребителя да избере една или повече опции от списък. Той е представен от малка кутия, която може да бъде отметната (маркирана) или немаркирана (немаркирана). Квадратчетата за отметка обикновено се използват във формуляри, анкети и други интерактивни елементи на уебсайтове и приложения. Те се използват и за да позволят на потребителите да направят множество селекции от списък с опции.
Графичен потребителски интерфейс с PyQt5
PyQt5 е рамка за графичен потребителски интерфейс (GUI) за Python, базирана на библиотеката Qt. Той позволява на разработчиците да създават приложения с интуитивен потребителски интерфейс, които могат да работят на множество операционни системи, включително Windows, Mac OS X и Linux. PyQt5 предоставя изчерпателен набор от джаджи и други инструменти за изграждане на модерни GUI приложения. Той също така включва поддръжка за OpenGL и 3D графики. С PyQt5 разработчиците могат да създават мощни междуплатформени приложения с широка гама от функции като поддръжка на плъзгане и пускане, възможности за редактиране на обогатен текст и др. Освен това PyQt5 идва с обширен набор от документация и уроци, за да помогне на разработчиците да започнат бързо.
Как да използвате квадратче за отметка в PyQt
Използването на квадратче за отметка в PyQt е лесен процес. Първо, трябва да създадете обект QCheckBox. Това може да се направи с помощта на конструктора QCheckBox, който приема два аргумента: текстовия етикет за квадратчето за отметка и родителския модул.
След като създадете вашия QCheckBox обект, можете да зададете неговото отметнато състояние с помощта на метода setChecked(). Този метод приема един аргумент: булева стойност, указваща дали квадратчето за отметка трябва да бъде отметнато (True) или неотметнато (False).
Можете също така да свържете сигнали от вашето поле за отметка с други уиджети или функции. Например, ако искате да актуализирате някаква друга джаджа, когато потребителят постави или премахне отметката в квадратчето ви, можете да използвате сигнала stateChanged и да го свържете към подходяща слот функция. След това функцията на слота ще бъде извикана всеки път, когато потребителят постави или премахне отметката от квадратчето ви.
И накрая, ако искате да извлечете информация дали вашето квадратче за отметка в момента е отметнато или не, можете да използвате неговия метод isChecked(), който връща True, ако е отметнато, и False в противен случай.