2

私の PyQt アプリには、次の構造を持つmain menuがあります。

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

エクモロの答えは、テストのポイントを逃し、 rus_lang.trigger()GUIとやり取りしていないため、間違っていると思います。

私にとっては、 APIが異なる可能性がありQTest.mouseClick(rus_lang, QtCore.Qt.LeftButton) ます。QButtonQAction

于 2022-01-10T19:08:54.483 に答える