📜  消息框 python pyqt - Python (1)

📅  最后修改于: 2023-12-03 15:11:06.530000             🧑  作者: Mango

消息框 Python PyQt

消息框在 Python PyQt GUI 编程中扮演着非常重要的角色。它可以帮助程序员向用户传递信息(如警告、错误、确认等)并接收来自用户的响应。Python PyQt 提供了几种消息框,如 QMessageBox、QInputDialog、QFileDialog 等。

QMessageBox

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 的基本语法:

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 的基本语法:

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 中消息框的介绍和示例代码,希望对你有所帮助。