QMessageBox 输出
QMessageBox Output
祝大家有个愉快的一天,
我正在尝试在 menuBar()
中创建退出按钮。我的意思是,当用户点击关闭按钮时,会弹出QMessageBox()
询问QMessageBox.Yes | QMessageBox.No
。根据信号,我想关闭程序。
为了测试代码,我只使用 print()
。但是结果是 &No 或 &Yes,而不仅仅是 No 或 Yes。这是什么原因?我想不通。
这是我的代码,
from PyQt5.QtWidgets import *
import sys
class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.ui()
self.menu()
self.show()
def ui(self):
self.setWindowTitle("Basic")
self.setGeometry(100, 50, 1080, 640)
def menu(self):
mainmenu = self.menuBar()
filemenu = mainmenu.addMenu("File")
file_close = QAction("Close", self)
file_close.setShortcut("Ctrl+Q")
file_close.triggered.connect(self.close_func1)
filemenu.addAction(file_close)
def close_func1(self): # Ask Yes | No Question
msg = QMessageBox()
msg.setWindowTitle("Warning!")
msg.setText("Would you like to exit ?")
msg.setIcon(QMessageBox.Question)
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
msg.setDefaultButton(QMessageBox.No)
msg.buttonClicked.connect(self.close_func2)
x = msg.exec()
def close_func2(self, i): # In this section code decide to close it or not with if statement
print(i.text())
app = QApplication(sys.argv)
w = Window()
sys.exit(app.exec_())
如果您想根据单击按钮的结果来决定程序的结果,最简单的解决方案是像 QDialog 通常那样检查 exec()
method, which returns a StandardButton
enumeration (and not a DialogCode
的结果。
def close_func1(self): # Ask Yes | No Question
# ...
x = msg.exec()
if x == msg.Yes:
QApplication.quit()
祝大家有个愉快的一天,
我正在尝试在 menuBar()
中创建退出按钮。我的意思是,当用户点击关闭按钮时,会弹出QMessageBox()
询问QMessageBox.Yes | QMessageBox.No
。根据信号,我想关闭程序。
为了测试代码,我只使用 print()
。但是结果是 &No 或 &Yes,而不仅仅是 No 或 Yes。这是什么原因?我想不通。
这是我的代码,
from PyQt5.QtWidgets import *
import sys
class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.ui()
self.menu()
self.show()
def ui(self):
self.setWindowTitle("Basic")
self.setGeometry(100, 50, 1080, 640)
def menu(self):
mainmenu = self.menuBar()
filemenu = mainmenu.addMenu("File")
file_close = QAction("Close", self)
file_close.setShortcut("Ctrl+Q")
file_close.triggered.connect(self.close_func1)
filemenu.addAction(file_close)
def close_func1(self): # Ask Yes | No Question
msg = QMessageBox()
msg.setWindowTitle("Warning!")
msg.setText("Would you like to exit ?")
msg.setIcon(QMessageBox.Question)
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
msg.setDefaultButton(QMessageBox.No)
msg.buttonClicked.connect(self.close_func2)
x = msg.exec()
def close_func2(self, i): # In this section code decide to close it or not with if statement
print(i.text())
app = QApplication(sys.argv)
w = Window()
sys.exit(app.exec_())
如果您想根据单击按钮的结果来决定程序的结果,最简单的解决方案是像 QDialog 通常那样检查 exec()
method, which returns a StandardButton
enumeration (and not a DialogCode
的结果。
def close_func1(self): # Ask Yes | No Question
# ...
x = msg.exec()
if x == msg.Yes:
QApplication.quit()