60605


pyqt5でメニューバーに表示されるテキストを後から変化させたいです。最終的にメニューバーから英語版と日本語版に切り替えられるようにすることが目標です。以下は試しに書いてみたコードです。

[code]

    import sys
    from PyQt5 import QtWidgets
    
    
    class MainWindow(QtWidgets.QMainWindow):
        def __init__(self, parent=None):
            super().__init__(parent)
    
            self.email_blast_widget = EmailBlast(parent=self)
            self.setCentralWidget(self.email_blast_widget)
            bar = self.menuBar()
    
            self.file_menu = bar.addMenu('File')
    
            self.open_action = QtWidgets.QAction('日本語', self, checkable=True)
            self.open_action2 = QtWidgets.QAction('英語', self, checkable=True)
            self.file_menu.addAction(self.open_action)
            self.file_menu.addAction(self.open_action2)
    
    
            self.open_action.triggered.connect(self.check)
            self.open_action2.triggered.connect(self.check2)
    
    
        def check(self):
            self.open_action.setText("日本語")
            self.open_action2.setText("英語")
    
        def check2(self):
            self.open_action.setText("japanese")
            self.open_action2.setText("english")
    
    
    class EmailBlast(QtWidgets.QWidget):
        def __init__(self, parent=None):
            super().__init__(parent)
            # create and set layout to place widgets
            layout = QtWidgets.QHBoxLayout(self)
            self.btn1 = QtWidgets.QPushButton('ボタン')
            layout.addWidget(self.btn1)
    
    
    
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        # creating main window
        mw = MainWindow()
        mw.show()
        #sys.exit(app.exec_())
        app.exec_()
    
[/code]

これを実行することで次のようなＧＵＩが作成されます。  
[![画像](https://i.stack.imgur.com/NPDXe.png)](https://i.stack.imgur.com/NPDXe.png)  
ここで、メニューバーのFileから表示される「日本語」，「英語」というメニューを押すことで、メニューバー全体の表示を日本語、英語に変えたいです。しかし、Fileという文字を変化させる方法が分かりません。


CC BY-SA 4.0
2019-11-17T09:53:03.673
60604
2019-11-17T10:33:33.753
26529
question
python3 pyqt5
pyqt5でメニューバーに表示される文字を変化させたい


[QMenuBar Class](https://doc.qt.io/qt-5/qmenubar.html) に出てくる`addMenu(const
QString &title)`のパラメータ名`title`に関連するクラス [QMenu
Class](https://doc.qt.io/qt-5/qmenu.html) のメソッド`setTitle(const QString
&title)`が該当するでしょう。

項目が増えた場合はまた違う指定が増えるでしょうが、今の段階では以下のように出来ます。

[code]

    def check(self):
        self.open_action.setText('日本語')
        self.open_action2.setText('英語')
        self.file_menu.setTitle('ファイル')
    
    def check2(self):
        self.open_action.setText('japanese')
        self.open_action2.setText('english')
        self.file_menu.setTitle('File')
    
[/code]


CC BY-SA 4.0
2019-11-17T10:33:33.753
60605
2019-11-17T10:33:33.753
26370
60604
answer