如何将功能绑定到 Qt 菜单栏中的操作?
How to bind a function to an Action from Qt menubar?
我正在使用 Python3 和 PyQt5,在 Qt Designer 中制作我的小部件和 windows。而且,我不会从 .ui 生成 .py 文件。我只是使用下一个代码加载它:
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
uic.loadUi('UI/Qt/source/MainWindow.ui', self)
所以,我想知道如何将菜单栏操作绑定到函数。
有什么办法可以做这样的事情吗?
self.getActionByName("actionTest_Action").connect(self.do_something)
所以,回答我自己的问题..
一种方法是使用 FindChild(QAction, "ActionName") 函数找到一个动作,然后使用 connect() 函数绑定一个函数
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
uic.loadUi('UI/Qt/source/MainWindow.ui', self)
action = self.findChild(QAction, "actionTest_Action")
action.triggered.connect(self.test)
def test(self):
print("Test")
使用 loadUi 时不必使用 findChild,因为此方法使用 objectName 作为名称将对象添加到 class 的属性,例如,在这种特殊情况下,代码比 是:
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
uic.loadUi('UI/Qt/source/MainWindow.ui', self)
<b>self.actionTest_Action.triggered.connect(self.test)</b>
def test(self):
print("Test")
我正在使用 Python3 和 PyQt5,在 Qt Designer 中制作我的小部件和 windows。而且,我不会从 .ui 生成 .py 文件。我只是使用下一个代码加载它:
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
uic.loadUi('UI/Qt/source/MainWindow.ui', self)
所以,我想知道如何将菜单栏操作绑定到函数。
有什么办法可以做这样的事情吗?
self.getActionByName("actionTest_Action").connect(self.do_something)
所以,回答我自己的问题..
一种方法是使用 FindChild(QAction, "ActionName") 函数找到一个动作,然后使用 connect() 函数绑定一个函数
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
uic.loadUi('UI/Qt/source/MainWindow.ui', self)
action = self.findChild(QAction, "actionTest_Action")
action.triggered.connect(self.test)
def test(self):
print("Test")
使用 loadUi 时不必使用 findChild,因为此方法使用 objectName 作为名称将对象添加到 class 的属性,例如,在这种特殊情况下,代码比
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
uic.loadUi('UI/Qt/source/MainWindow.ui', self)
<b>self.actionTest_Action.triggered.connect(self.test)</b>
def test(self):
print("Test")