QAction: en las aplicaciones PyQt5, se pueden invocar muchos comandos comunes a través de menús, botones de la barra de herramientas y atajos de teclado, ya que el usuario espera que cada comando se realice de la misma manera, independientemente de la interfaz de usuario utilizada, QAction es útil para representar cada comando como una acción. Las acciones se pueden agregar a los menús y las barras de herramientas, y automáticamente las mantendrán sincronizadas. Por ejemplo, en un procesador de texto, si el usuario presiona un botón de la barra de herramientas Negrita, el elemento de menú Negrita se verificará automáticamente. A continuación se muestra cómo se verá una acción dentro de la barra de herramientas
Sintaxis:
action = QAction(name)
Esta acción se puede agregar a las barras de herramientas o QMenus con la ayuda del método addAction y addActions. A continuación se muestran algunos comandos de uso frecuente con QAction
setCheckable : To make QAction Checkable setIcon : To add icon to the QAction setText : To set the display name of the QAction text : To get the display name of the QAction setPriority : To set the priority of the action triggered.connect : To connect an method with it when triggered signal is emitted
Ejemplo: en este ejemplo, crearemos una ventana principal que tiene una barra de herramientas, una etiqueta y una barra de herramientas que consta de QAction, cada una con un método separado conectado, a continuación se muestra la implementación.
Python3
# importing libraries from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui from PyQt5.QtGui import * from PyQt5.QtCore import * import sys class Window(QMainWindow): def __init__(self): super().__init__() # setting title self.setWindowTitle("Python ") # setting geometry self.setGeometry(100, 100, 500, 400) # calling method self.UiComponents() # showing all the widgets self.show() # method for components def UiComponents(self): # creating a tool bar toolbar = QToolBar(self) # setting geometry to the tool bar toolbar.setGeometry(50, 100, 300, 35) # creating QAction Instances action1 = QAction("First Action", self) action2 = QAction("Second Action", self) action3 = QAction("Third Action", self) # adding these actions to the tool bar toolbar.addAction(action1) toolbar.addAction(action2) toolbar.addAction(action3) # creating a label label = QLabel("GeeksforGeeks", self) # setting geometry to the label label.setGeometry(100, 150, 200, 50) # adding triggered action to the first action action1.triggered.connect(lambda: label.setText("First Action Triggered")) # adding triggered action to the second action action2.triggered.connect(lambda: label.setText("Second Action Triggered")) # adding triggered action to the third action action3.triggered.connect(lambda: label.setText("Third Action Triggered")) # create pyqt5 app App = QApplication(sys.argv) # create the instance of our Window window = Window() # start the app sys.exit(App.exec())
Producción :
Otro ejemplo En este ejemplo, crearemos un botón de enlace de comando y le agregaremos un menú que tiene QAction, a continuación se muestra la implementación
Python3
# importing libraries from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui from PyQt5.QtGui import * from PyQt5.QtCore import * import sys class Window(QMainWindow): def __init__(self): super().__init__() # setting title self.setWindowTitle("Python ") # setting geometry self.setGeometry(100, 100, 500, 400) # calling method self.UiComponents() # showing all the widgets self.show() # method for components def UiComponents(self): # creating a command link button cl_button = QCommandLinkButton("Press", self) # setting geometry cl_button.setGeometry(150, 100, 150, 60) # QActions action1 = QAction("Geeks", self) action2 = QAction("GfG", self) # making action2 checkable action2.setCheckable(True) # QMenu menu = QMenu() # adding actions to menu menu.addActions([action1, action2]) # setting menu to the button cl_button.setMenu(menu) # creating label label = QLabel("GeeksforGeeks", self) # setting label geometry label.setGeometry(100, 200, 300, 80) # making label multiline label.setWordWrap(True) # adding method to the action action1.triggered.connect(lambda: label.setText("Action1 is triggered")) # adding method to the action2 when it get checked action2.toggled.connect(lambda: label.setText("Action2 is toggled")) # create pyqt5 app App = QApplication(sys.argv) # create the instance of our Window window = Window() # start the app sys.exit(App.exec())
Producción :
Publicación traducida automáticamente
Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA