簡體   English   中英

Python PyQt5 QMessageBox無法打開

[英]Python PyQt5 QMessageBox not opening

當我按infoButton時,我正在嘗試打開一個消息框。 它運行infoDialogue方法,因為它打印“我在這里”,但它不打開infoBox。 我錯過了什么?

我正在使用python 3.5和PyQt5

謝謝!

這是代碼:

import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QToolTip, QPushButton, QMessageBox)
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtGui import QIcon, QFont

class mainWindow(QWidget):

    def __init__(self, screenWidth, screenHeight, windowWidth=400, windowHeight=400):      
        super().__init__()
        self.screenWidth = screenWidth
        self.screenHeight = screenHeight              
        self.windowWidth = windowWidth
        self.windowHeight = windowHeight
        self.initUI()


    def initUI(self):
        QToolTip.setFont(QFont('SansSerif', 10))
        self.setToolTip('ToolTip Widget')

        exitButton = QPushButton('Exit', self)        
        exitButton.setToolTip("<b>Wish to Exit?</b>")        
        exitButton.resize(exitButton.sizeHint())       
        exitButton.move(100, 100)      
        exitButton.clicked.connect(QCoreApplication.instance().quit)           

        infoButton = QPushButton('Info', self) # Button that calls infoDialogue()
        infoButton.setToolTip('<b>ToolTip</b>')
        infoButton.resize(infoButton.sizeHint())
        infoButton.move(100, 200)
        infoButton.clicked.connect(self.infoDialogue)      

        positionX = (self.screenWidth - self.windowWidth) / 2
        positionY = (self.screenHeight - self.windowHeight) / 2
        self.setGeometry(positionX, positionY, self.windowWidth, self.windowHeight)

        self.setWindowTitle('Window Title')
        #self.setWindowIcon(QIcon('./icon.png'))

        self.show()


    def infoDialogue(self): ## Method to open a message box
        infoBox = QMessageBox() ##Message Box that doesn't run
        print("Im here")
        infoBox.setIcon(QMessageBox.Information)
        infoBox.setText("Informações Adicionais")
        infoBox.setInformativeText("Informative Text")
        infoBox.setWindowTitle("Window Title")
        infoBox.setDetailedText("Detailed Text")
        infoBox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
        infoBox.setEscapeButton(QMessageBox.Close)       


    def closeEvent(self, event):        
        reply = QMessageBox.question(self, 'Exit', "Are you sure you want to exit?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)                                      
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    screenResolution = app.desktop().screenGeometry()
    screenWidth = screenResolution.width()
    screenHeight = screenResolution.height()
    example = mainWindow(screenWidth, screenHeight)
    sys.exit(app.exec_())

你可能需要一個

infoBox.exec_() 

最后實際執行它

或者不需要_ (下划線),直接exec

infoBox.exec()

您需要執行消息框才能顯示它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM