PyQt QTest 点击 QMenu
PyQt QTest click on QMenu
在我的 PyQt 应用程序中,我有一个 主菜单 ,它具有以下结构:
Main Menu
|___
|
Language
| |
| Russian
| |
| English
Exit
我想单击 俄语 以测试语言是否已更改。我在 GUI
中有一个 link 到 language_menu
[...somewhere in MainWindow...]
self.language_menu = QtGui.QMenu()
[....]
所以
from PyQt4 import QtGui, QtCore
from PyQt4.QTest import QTest
from gui import MainWindow
class TestMainWindow(unittest.TestCase):
def setUp(self):
self.app = QtGui.QApplication([])
self.ui = MainWindow()
def tearDown(self):
self.app.deleteLater()
def test_translation(self):
menu = self.ui.language_menu
rus_lang = menu.actions()[0]
QTest.mouseClick(rus_lang, QtCore.Qt.LeftButton)
但它告诉我
argument 1 has unexpected type 'QAction'
我该怎么做?有可能吗?
您可以使用 rus_lang.trigger()
或 rus_lang.toggle()
激活菜单项。
我认为 ekhumoro 的回答是错误的,因为它没有抓住测试的重点,
rus_lang.trigger()
没有与 gui 交互。
对我来说QTest.mouseClick(rus_lang, QtCore.Qt.LeftButton)
与 QButton
一起工作正常,也许 QAction
有不同 API.
在我的 PyQt 应用程序中,我有一个 主菜单 ,它具有以下结构:
Main Menu
|___
|
Language
| |
| Russian
| |
| English
Exit
我想单击 俄语 以测试语言是否已更改。我在 GUI
中有一个 link 到 language_menu[...somewhere in MainWindow...]
self.language_menu = QtGui.QMenu()
[....]
所以
from PyQt4 import QtGui, QtCore
from PyQt4.QTest import QTest
from gui import MainWindow
class TestMainWindow(unittest.TestCase):
def setUp(self):
self.app = QtGui.QApplication([])
self.ui = MainWindow()
def tearDown(self):
self.app.deleteLater()
def test_translation(self):
menu = self.ui.language_menu
rus_lang = menu.actions()[0]
QTest.mouseClick(rus_lang, QtCore.Qt.LeftButton)
但它告诉我
argument 1 has unexpected type 'QAction'
我该怎么做?有可能吗?
您可以使用 rus_lang.trigger()
或 rus_lang.toggle()
激活菜单项。
我认为 ekhumoro 的回答是错误的,因为它没有抓住测试的重点,
rus_lang.trigger()
没有与 gui 交互。
对我来说QTest.mouseClick(rus_lang, QtCore.Qt.LeftButton)
与 QButton
一起工作正常,也许 QAction
有不同 API.