📅  最后修改于: 2023-12-03 15:11:06.530000             🧑  作者: Mango
消息框在 Python PyQt GUI 编程中扮演着非常重要的角色。它可以帮助程序员向用户传递信息(如警告、错误、确认等)并接收来自用户的响应。Python PyQt 提供了几种消息框,如 QMessageBox、QInputDialog、QFileDialog 等。
QMessageBox 是 Python PyQt 中最常见的消息框之一。它可以显示不同类型的消息,如信息、警告、错误、询问等,同时也支持自定义按钮和图标。
以下是 QMessageBox 的基本语法:
QMessageBox.information(parent, title, message)
其中,parent 代表消息框的父窗口。title 代表消息框的标题,message 代表消息框的内容。
下面是一个示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Message box')
self.show()
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Message', 'Are you sure to quit?',
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
运行代码后会出现一个标题为 "Message box" 的窗口。当用户关闭窗口时,会弹出一个询问消息框,让用户确认是否真的要退出程序。如果用户点击 "Yes" 按钮,则程序会正常退出。如果用户点击 "No" 按钮,则程序继续运行。
QInputDialog 可以用于获取用户的输入。它支持不同类型的输入框,如文本框、数字框、列表框等。以下是 QInputDialog 的基本语法:
QInputDialog.getInt(parent, title, label, value, min, max, step)
其中,parent 代表消息框的父窗口。title 代表消息框的标题,label 代表消息框的提示信息。value 代表输入框的默认值,min 代表输入框的最小值,max 代表输入框的最大值,step 代表输入框的步长。
下面是一个示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QInputDialog, QLabel, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.input_btn = QPushButton('Input', self)
self.input_btn.move(20, 20)
self.input_btn.clicked.connect(self.showInputDialog)
self.name_label = QLabel(self)
self.name_label.move(20, 60)
self.name_label.setText('Your name:')
self.name_edit = QLineEdit(self)
self.name_edit.move(100, 60)
vbox = QVBoxLayout()
vbox.addWidget(self.input_btn)
vbox.addWidget(self.name_label)
vbox.addWidget(self.name_edit)
self.setLayout(vbox)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Input dialog')
self.show()
def showInputDialog(self):
text, ok = QInputDialog.getText(self, 'Input dialog', 'Enter your name:')
if ok:
self.name_edit.setText(text)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
运行代码后会出现一个标题为 "Input dialog" 的窗口。当用户点击 "Input" 按钮时,会弹出一个文本框,提示用户输入姓名。如果用户点击 "OK" 按钮,则程序会将用户输入的姓名显示到上面的 QLineEdit 中。
QFileDialog 可以用于打开和保存文件。它支持不同类型的文件、目录和过滤器。以下是 QFileDialog 的基本语法:
QFileDialog.getOpenFileName(parent, caption, directory, filter)
QFileDialog.getSaveFileName(parent, caption, directory, filter)
其中,parent 代表消息框的父窗口。caption 代表消息框的标题。directory 代表文件对话框的初始目录。filter 代表文件过滤器,用于限制用户选择的文件类型。
下面是一个示例代码:
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QTextEdit, QAction, QFileDialog
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.textEdit = QTextEdit()
self.setCentralWidget(self.textEdit)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
openFile = QAction(QIcon('open.png'), 'Open', self)
openFile.setShortcut('Ctrl+O')
openFile.setStatusTip('Open new File')
openFile.triggered.connect(self.showDialog)
saveFile = QAction(QIcon('save.png'), 'Save', self)
saveFile.setShortcut('Ctrl+S')
saveFile.setStatusTip('Save the File')
saveFile.triggered.connect(self.saveDialog)
fileMenu.addAction(openFile)
fileMenu.addAction(saveFile)
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle('File dialog')
self.show()
def showDialog(self):
fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')
if fname[0]:
f = open(fname[0], 'r')
with f:
data = f.read()
self.textEdit.setText(data)
def saveDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fname = QFileDialog.getSaveFileName(self, 'Save file', '/home', 'Text Files (*.txt)', options=options)
if fname[0]:
f = open(fname[0], 'w')
f.write(self.textEdit.toPlainText())
f.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
运行代码后会出现一个标题为 "File dialog" 的窗口。当用户点击 "Open" 按钮时,会弹出一个文件对话框,提示用户选择要打开的文件。如果用户点击 "Save" 按钮时,会弹出一个文件对话框,提示用户选择要保存的文件路径和名称。如果用户选择的文件类型不是 "Text Files",则会提示 "Unsupported file type" 的信息。如果用户选择了一个文件,则程序会读取该文件的内容,并显示在 QTextEdit 中。如果用户保存了一个文件,则程序会将 QTextEdit 中的内容保存到用户指定的文件中。
以上就是 Python PyQt 中消息框的介绍和示例代码,希望对你有所帮助。