Python: PySide(PyQt)QMessageBox按鈕顯示中文


習慣了Delphi、c#調用系統MessageBox本地化顯示,待用PySide調用時,Qt原生提示對話框,默認以英文顯示。

如何本地化呢?

參考些資料,加以摸索,實現所需效果。並可根據此思路,設計自己所需要的MessageBox封裝。

    QTextCodec.setCodecForTr(QTextCodec.codecForName("UTF-8"))
    box = QMessageBox(QMessageBox.Question, self.tr("提示"), self.tr("您確定要退出嗎?"), QMessageBox.NoButton, self)
    yr_btn = box.addButton(self.tr(""), QMessageBox.YesRole)
    box.addButton(self.tr(""), QMessageBox.NoRole)
    box.exec_()
    if box.clickedButton() == yr_btn:
        print 'Bye bye...'
        return
    else:
        print '繼續...'

效果如下圖示:

 

直接以.exec_()判斷,[是]按鈕返回0,尚不知如何與QMesageBox.YesRole對應。但若使用QMessageBox.AcceptRole與QMessageBox.RejectRole則可以。

下面代碼,摘自PySide自帶例子:

    MESSAGE = "<p>Message boxes have a caption, a text, and up to three " \
              "buttons, each with standard or custom texts.</p>" \
              "<p>Click a button to close the message box. Pressing the Esc " \
              "button will activate the detected escape button (if any).</p>"

    msgBox = QMessageBox(QMessageBox.Question,
            "QMessageBox.warning()", MESSAGE,
            QMessageBox.NoButton, self)
    msgBox.addButton("Save &Again", QMessageBox.AcceptRole)
    msgBox.addButton("&Continue", QMessageBox.RejectRole)
    if msgBox.exec_() == QMessageBox.AcceptRole:
        print "Save Again"
    else:
        print "Continue"

顯示如圖:

 

另一種分步方案:

    box = QtGui.QMessageBox()
    box.setIcon(QtGui.QMessageBox.Question)
    box.setWindowTitle('Kaydet!')
    box.setText('Kaydetmek İstediğinize Emin Misiniz?')
    box.setStandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
    buttonY = box.button(QtGui.QMessageBox.Yes)
    buttonY.setText('Evet')
    buttonN = box.button(QtGui.QMessageBox.No)
    buttonN.setText('Iptal')
    box.exec_()

    if box.clickedButton() == buttonY:
        print 'YES pressed'
    elif box.clickedButton() == buttonN:
       print 'NO pressed'

 

誰可知之?大抵其官方文檔可見些解釋吧。一些是點擊觸發事件,一些僅是樣式類似。

 

參考資料

QMessageBox - PySide v1.0.7 documentation

QDialogButtonBox Class | Qt 4.8


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM