从QAction

时间:2019-05-17 08:38:57

标签: python pyqt pyqt5

我使用QMenu为用户提供了选择动作类型的可能性。用户选择后,该值应作为文本输入到数据库中。 我的问题:如何从QMenu获取文本值,即:如果用户从菜单中按“ WALK”,我想将“ WALK”另存为字符串并将其转发到要在sql DB上插入的方法。

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, QMenu, QApplication,QPushButton


class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('ACTIONS')

        newAct = QAction('RUN', self)

        impMenu = QMenu('WALK', self)
        impAct = QAction('WALK SLOW', self)
        impAct2 = QAction('WALK FAST',self)
        impMenu.addAction(impAct)
        impMenu.addAction((impAct2))


        fileMenu.addAction(newAct)
        fileMenu.addMenu(impMenu)

        button = QPushButton('insert button', self)
        button.move(100, 70)
        button.clicked.connect(self.on_click)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Submenu')
        self.show()

        actions = [fileMenu,impMenu]
        for i in actions:
            i.triggered.connect(self.get_text)


    def get_text(self,q):
        '''get the text variable from Action Menu'''
        txt_to_insert_in_db = q.text()
        print(txt_to_insert_in_db)

    def on_click(self):
        '''Method to retrieve Qactions text and insert in Database as TEXT'''
        print(self.get_text())

 #---> TO BE USED LATER IN THE PROGRAM
        #query = QSqlQuery()
        #query.exec_("""INSERT INTO table etc... VALUE "?" ......""")
        #query.bindValue(0, self.get_text.text()) etc....

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

在上面的示例中,您可以看到我可以检索和打印“ text_to_insert_in_DB”如何在方法中存储该值?

NB:我看过这篇文章:stackoverflow on label QAction,但我不确定它是否适用于我的情况,即使那样我也无法真正理解。

0 个答案:

没有答案