[英]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.