0 前言
对话窗口是QDialog的子类,用于弹出临时窗口进行交互
继承关系:
QWidget
- QDialoh
- QColorDialog
- QErrorMessage
- QFileDialog
- QFontDialog
- QInputDialog
- QMessageBox
- QProgressDialog
- QWizard
1 错误消息对话框 QErrorMessage
1.1 方法列表
QErrorMessage类 | 说明 |
---|---|
self=QErrorMessage(parent) | 创建实例 |
self.setWindowTitle(title) | 设置标题 |
self.showMessage(text) | 设置文本 |
继承自QDialog类的方法 | |
self.exec() | 以模式显示窗口,锁住程序以等待窗口的返回值 |
继承自QWidget类的方法 | |
x , y , width , height , ... | 几何类方法,详见窗口的几何数据 |
self.setWindowTitle(title) | 设置标题栏文字title ->字符串 |
self.setWindowIcon(icon) | 设置图标icon ->QIcon类 |
self.show() | 显示窗口 |
self.close() | 关闭窗口 |
1.2 实例 错误信息
import sys
from PyQt5.QtWidgets import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.move(500, 400)
self.setFixedSize(300, 200)
vlayout = QVBoxLayout()
self.setLayout(vlayout)
button = QPushButton('错误')
button.clicked.connect(self.showErrorMessage)
vlayout.addWidget(button)
def showErrorMessage(self):
message = QErrorMessage(self)
message.setWindowTitle('错误')
message.showMessage('单击错误')
message.exec_()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
2 通用对话框 QMessageBox
2.1 方法列表
QMessageBox类 | 说明 |
---|---|
self=QMessageBox() | 创建实例 |
=self.information(parent, title, text, buttons, default_button) | 创建信息框,返回选择的按钮button ->按钮default_button ->默认按钮 |
=self.question(parent, title, text, buttons, default_button) | 创建问答框,返回选择的按钮button ->按钮default_button ->默认按钮 |
=self.warning(parent, title, text, buttons, default_button) | 创建警告框,返回选择的按钮button ->按钮default_button ->默认按钮 |
=self.ctitical(parent, title, text, buttons, default_button) | 创建危险框,返回选择的按钮button ->按钮default_button ->默认按钮 |
self.about(parent, title, text) | 创建关于框 |
self.about(parent, title, text) | 创建关于框 |
QMessageBox.Yes QMessageBox.No QMessageBox.Cancel | 按钮 |
继承自QDialog类的方法 | |
self.exec() | 以模式显示窗口,锁住程序以等待窗口的返回值 |
继承自QWidget类的方法 | |
x , y , width , height , ... | 几何类方法,详见窗口的几何数据 |
self.setWindowTitle(title) | 设置标题栏文字title ->字符串 |
self.setWindowIcon(icon) | 设置图标icon ->QIcon类 |
self.show() | 显示窗口 |
self.close() | 关闭窗口 |
2.2 示例
import sys
from PyQt5.QtWidgets import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.move(500, 400)
self.setFixedSize(400, 300)
vlayout = QVBoxLayout()
self.setLayout(vlayout)
button = QPushButton('错误')
button.clicked.connect(self.showErrorMessage)
vlayout.addWidget(button)
def showErrorMessage(self):
reply = QMessageBox.question(self, '退出', '确定退出?', \
QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel, QMessageBox.Cancel)
if reply == QMessageBox.Yes:
print('退出')
else:
print('不退出')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
3 文件对话框 QFileDialog
QFileDialog是用于打开和保存文件的标准对话框。QFileDialog类继承自QDialog类
3.1 方法列表
QFileDialog类 | 说明 |
---|---|
self=QFileDialog(parent) | 创建实例 |
self.setFileMode() | 输入QFileDialog下的常量QFileDialog.AnyFile :任何文件QFileDialog.ExistingFile :已存在的文件QFileDialog.Directory :文件目录QFileDialog.ExistingFiles :已存在的多个文件 |
=self.selectedFiles() | 返回的列表,列表中下标0 元素为选中的文件地址,正斜杠分隔 |
self.getSaveFileName(file) | 使用用户选择的文件名保存文件 |
继承自QDialog类的方法 | |
self.exec() | 以模式显示窗口,锁住程序以等待窗口的返回值 |
继承自QWidget类的方法 | |
x , y , width , height , ... | 几何类方法,详见窗口的几何数据 |
self.setWindowTitle(title) | 设置标题栏文字title ->字符串 |
self.setWindowIcon(icon) | 设置图标icon ->QIcon类 |
self.show() | 显示窗口 |
self.close() | 关闭窗口 |
3.2 示例 选择文件,显示路径
import sys
from PyQt5.QtWidgets import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.move(500, 400)
self.setFixedSize(300, 300)
self.setWindowTitle('显示文件内容')
layout = QVBoxLayout()
self.setLayout(layout)
content = QLineEdit()
layout.addWidget(content)
button1 = QPushButton('加载文件夹')
button1.clicked.connect(lambda: self.getDir(content))
layout.addWidget(button1)
button2 = QPushButton('加载文件')
button2.clicked.connect(lambda: self.getFile(content))
layout.addWidget(button2)
def getDir(self, content):
diag = QFileDialog()
diag.setFileMode(QFileDialog.Directory)
if diag.exec():
file_path = diag.selectedFiles()[0]
content.setText(file_path)
def getFile(self, content):
diag = QFileDialog()
diag.setFileMode(QFileDialog.AnyFile)
if diag.exec():
file_path = diag.selectedFiles()[0]
content.setText(file_path)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())