Qt对话框有普通消息框,还有文字,颜色,字体等多种对话框类控件。直接上代码好了。
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys
class SDialog(QWidget):
def __init__(self, parent = None):
super(SDialog, self).__init__(parent)
self.initUI()
def initUI(self):
self.setWindowTitle("Dialog")
self.setGeometry(300,300,450,250)
#设定窗口标题和窗口的大小和位置。
inputButton = QPushButton(self.tr("用户输入对话框"))
fileButton = QPushButton(self.tr("文件选择对话框"))
colorButton = QPushButton(self.tr("颜色选择对话框"))
fontButton = QPushButton(self.tr("字体选择对话框"))
self.inputL = QLineEdit()
self.filelL = QLineEdit()
# 创建两个QlineEdit实例,来显示选择的内容
self.colorFrame = QFrame()
self.colorFrame.setFrameShape(QFrame.Box)
self.colorFrame.setAutoFillBackground(True)
# 创建一个Frame实例用来显示颜色
self.fontL = QLabel("Hello World!")
grid = QGridLayout()
grid.addWidget(inputButton, 1, 0)
grid.addWidget(self.inputL, 1, 1)
grid.addWidget(fileButton, 2, 0)
grid.addWidget(self.filelL, 2, 1)
grid.addWidget(colorButton, 3, 0)
grid.addWidget(self.colorFrame, 3, 1)
grid.addWidget(fontButton, 4, 0)
grid.addWidget(self.fontL, 4, 1)
self.setLayout(grid)
#网格类布局
inputButton.clicked.connect(self.openInput)
fileButton.clicked.connect(self.openFile)
colorButton.clicked.connect(self.openColor)
fontButton.clicked.connect(self.openFont)
#把四个按钮控件的clicked()信号和槽连接
def openInput(self):
t, ok = QInputDialog.getText(self, "用户输入对话框", "请输入任意内容" )
if ok:
self.inputL.setText(t)
def openFile(self):
s = QFileDialog.getOpenFileName(self, "open file dialog", "d:/", "python file(*py)")
self.filelL.setText(s[0])
def openColor(self):
c = QColorDialog.getColor(Qt.blue)
if c.isValid():
self.colorFrame.setPalette(QPalette(c))
def openFont(self):
f, ok = QFontDialog.getFont()
if ok:
self.fontL.setFont(f)
if __name__ == '__main__':
app = QApplication(sys.argv)
form = SDialog()
form.show()
app.exec_()
QInputDialog除了可以选择让用户输入文字还有可以输入int和双精度浮点数等等。参数2和3分别为窗口标题和提示内容。
QFileDialog.getOpenFileName()第二个参数为窗口标题,第三个为选择打开文件的目录,第四个是筛选打开文件的类型
QColorDialog.getColor()如果有返回值,那么c.isValid就会有值,执行设置frame的颜色。
QfontDialog.getFont()返回一个Qfont对象和一个布尔值组成的元组。