PyQt5 对话框

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对象和一个布尔值组成的元组。

原文地址:https://www.cnblogs.com/jikeboy/p/6522454.html