QDialog 类的子类主要有QMEssageBox、QFileDialog、QFontDialog、QInputDialog等
常用的方法
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class DialogDemo(QMainWindow):
def __init__(self, parent=None):
super(DialogDemo, self).__init__(parent)
self.setWindowTitle("Dialog 例子")
self.resize(350, 300)
self.btn = QPushButton(self)
self.btn.setText("弹出对话框")
self.btn.move(50,50)
self.btn.clicked.connect(self.showdialog)
def showdialog(self):
dialog = QDialog()
btn = QPushButton("ok",dialog)
btn.move(50,50)
dialog.setWindowTitle("Dialog")
dialog.setWindowModality(Qt.ApplicationModal)
dialog.exec_()
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = DialogDemo()
demo.show()
sys.exit(app.exec_())
Dialog窗口的WindowModality属性决定是否为模态或非模态,当用户按下ESC
键时,对话框窗口将会默认调用QDialog.reject()方法,然后关闭窗口。
QMessageBox是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈。每个标准按钮都有一个预定的文本,角色和十六进制。
QMessageBox类提供了很多常用的弹出式对话框,如提示、警告、错误、查询、关于等对话框。
常用的方法
QMessageBox的标准按钮
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MyWindow(QWidget):
def __init__(self):
super(MyWindow, self).__init__()
self.setWindowTitle("QMessageBox例子")
self.resize(300,100)
self.myButton = QPushButton(self)
self.myButton.setText("点击弹出消息框")
self.myButton.clicked.connect(self.msg)
def msg(self):
reply = QMessageBox.information(self,"标题","消息文本",QMessageBox
.Yes|QMessageBox.No, QMessageBox.Yes)
if __name__ == '__main__':
app = QApplication(sys.argv)
myshow = MyWindow()
myshow.show()
sys.exit(app.exec_())
QInputDialog 控件是一个标准对话框,由一个文本框和两个按钮(OK按钮和Cancel按钮)组成,当用户点击OK按钮或按Enter键后,父窗口可以通过收集QInputDialog控件输入的信息。
在QInputDialog控件中可以输入数字、字符、字符串或列表中的选项。
常用的方法
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class InputdialogDemo(QWidget):
def __init__(self, parent =None):
super(InputdialogDemo, self).__init__(parent)
layout = QFormLayout()
self.btn1 = QPushButton("获得列表里选项")
self.btn1.clicked.connect(self.getItem)
self.le1 = QLineEdit()
layout.addRow(self.btn1, self.le1)
self.btn2 = QPushButton("获得字符串")
self.btn2.clicked.connect(self.getText)
self.le2 = QLineEdit()
layout.addRow(self.btn2, self.le2)
self.btn3 = QPushButton("获得整数")
self.btn3.clicked.connect(self.getInt)
self.le3 = QLineEdit()
layout.addRow(self.btn3, self.le3)
self.setLayout(layout)
self.setWindowTitle("Input Dialog 例子")
def getItem(self):
items = ("C","C++","Java","Python")
item, ok = QInputDialog.getItem(self, "select input dialog","语言列表",items,0,False)
if ok and item:
self.le1.setText(item)
def getText(self):
text, ok = QInputDialog.getText(self, "Text Input Dialog","输入姓名:")
if ok:
self.le2.setText(str(text))
def getInt(self):
num, ok = QInputDialog.getInt(self, "integer input dialog","输入数字")
if ok:
self.le3.setText(str(num))
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = InputdialogDemo()
demo.show()
sys.exit(app.exec_())
QFontDialog 控件是一个常用的字体选择对话框,可以一个用户选择所显示的字号文本、样式和格式。
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class FontDialogDemo(QWidget):
def __init__(self, parent = None):
super(FontDialogDemo, self).__init__(parent)
layout = QVBoxLayout()
self.fontButton = QPushButton("Choose font")
self.fontButton.clicked.connect(self.getFont)
layout.addWidget(self.fontButton)
self.fontLineEdit = QLabel("Hello , 测试字体例子")
layout.addWidget(self.fontLineEdit)
self.setLayout(layout)
self.setWindowTitle("Font Dialog 例子")
def getFont(self):
font, ok = QFontDialog.getFont()
if ok:
self.fontLineEdit.setFont(font)
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = FontDialogDemo()
demo.show()
sys.exit(app.exec_())
QFileDialog 是用于打开和保存文本的标准对话框。
QFileDialog在打开文本时使用了文本过滤器,用于显示指定扩展名的文件。也可以设置使用QFileDialog打开文件时的起始目录和指定扩展名的文件。
常用方法
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class filedialogdmeo(QWidget):
def __init__(self, parent=None):
super(filedialogdmeo, self).__init__(parent)
layout = QVBoxLayout()
self.btn = QPushButton("加载图片")
self.btn.clicked.connect(self.getfille)
layout.addWidget(self.btn)
self.le = QLabel("")
layout.addWidget(self.le)
self.btn1 = QPushButton("加载文本文件")
self.btn1.clicked.connect(self.getfiles)
layout.addWidget(self.btn1)
self.contents = QTextEdit()
layout.addWidget(self.contents)
self.setLayout(layout)
self.setWindowTitle("File Didalog 例子")
def getfille(self):
fname,_= QFileDialog.getOpenFileName(self,"Open file","c:\\","Image files (*.jpg *.gif)")
self.le.setPixmap(QPixmap(fname))
def getfiles(self):
dlg = QFileDialog()
dlg.setFileMode(QFileDialog.AnyFile)
dlg.setFilter(QDir.Files)
if dlg.exec_():
filenames = dlg.selectedFiles()
f = open(filenames[0],'r',encoding="UTF-8")
with f:
data = f.read()
self.contents.setText(data)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = filedialogdmeo()
ex.show()
sys.exit(app.exec_())
在打开文件的时候,需要指定文件编码的类型,不然可能无法打开文件。