2

在我的 PyQt 应用程序中,我有一个主菜单,它具有以下结构:

Main Menu
|___
    |
    Language
    |       |
    |        Russian
    |       |
    |        English
    Exit    

我想单击俄语以测试语言是否已更改。我在 GUI 中有一个到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)

但它告诉我

参数 1 具有意外类型“QAction”

我该怎么做呢?甚至可能吗?

4

2 回答 2

2

您可以使用rus_lang.trigger()rus_lang.toggle()来激活菜单项。

于 2016-02-14T01:11:36.633 回答
0

我认为 ekhumoro 的答案是错误的,因为它错过了测试的重点,没有 rus_lang.trigger()与 gui 交互。

对我来说,可能有不同的 APIQTest.mouseClick(rus_lang, QtCore.Qt.LeftButton) 可以正常工作。QButtonQAction

于 2022-01-10T19:08:54.483 回答