我使用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,但我不确定它是否适用于我的情况,即使那样我也无法真正理解。