PyQt5 QDialog对话框(QMessageBox,QInputDialog,QFontDialog,QFileDialog,QColorDialog)

news2024/11/29 10:52:38

PyQt5 QDialog对话框

  • QDialog类图
  • QDialog
  • QMessageBox
  • QInputDialog
  • QFontDialog
  • QFileDialog
  • QColorDialog

QDialog类图

在这里插入图片描述

QDialog

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

class MyDialogWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MyDialogWindow, self).__init__(parent)
        self.setWindowTitle("Dialog Demo")
        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)
    win = MyDialogWindow()
    win.show()
    sys.exit(app.exec_())

在这里插入图片描述

QMessageBox

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

class MyMessageBox(QWidget):
    def __init__(self):
        super(MyMessageBox, self).__init__()
        self.setWindowTitle("QMessageBox Demo")
        self.resize(300, 300)

        layout = QVBoxLayout()
        self.btn1 = QPushButton()
        self.btn1.setText("弹出信息消息框")
        self.btn1.clicked.connect(lambda:self.showmessagebox(1))
        layout.addWidget(self.btn1)

        self.btn2 = QPushButton("弹出问答消息框", self)
        self.btn2.clicked.connect(lambda:self.showmessagebox(2))
        layout.addWidget(self.btn2)

        self.btn3 = QPushButton("弹出警告消息框", self)
        self.btn3.clicked.connect(lambda:self.showmessagebox(3))
        layout.addWidget(self.btn3)

        self.btn4 = QPushButton("弹出严重错误框", self)
        self.btn4.clicked.connect(lambda:self.showmessagebox(4))
        layout.addWidget(self.btn4)

        self.btn5 = QPushButton("弹出关于消息框", self)
        self.btn5.clicked.connect(lambda:self.showmessagebox(5))
        layout.addWidget(self.btn5)

        self.setLayout(layout)

    def showmessagebox(self, index):
        if index == 1:
            reply = QMessageBox.information(self, "信息标题", "信息消息正文", QMessageBox.Yes|QMessageBox.No, QMessageBox.Yes)
            print(reply)
        elif index == 2:
            reply = QMessageBox.question(self, "问答标题", "问答消息文本", QMessageBox.Ok|QMessageBox.Cancel, QMessageBox.Ok)
            print(reply)
        elif index == 3:
            reply =QMessageBox.warning(self, "警告标题", "警告消息内容", QMessageBox.Ok|QMessageBox.Cancel, QMessageBox.Ok)
            print(reply)
        elif index == 4:
            reply = QMessageBox.critical(self, "严重标题","严重错误消息内容", QMessageBox.Yes|QMessageBox.No, QMessageBox.Yes)
            print(reply)
        elif index == 5:
            reply = QMessageBox.about(self, "关于标题", "关于消息对话框文本")
            print(reply)

            
if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MyMessageBox()
    win.show()
    sys.exit(app.exec_())

在这里插入图片描述

QInputDialog

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

class MyInputDialogWindow(QWidget):
    def __init__(self, parent=None):
        super(MyInputDialogWindow, 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.btn4 = QPushButton("获得浮点数")
        self.btn4.clicked.connect(self.getDouble)
        self.le4 = QLineEdit()
        layout.addRow(self.btn4, self.le4)
        
        self.setLayout(layout)
        self.resize(350, 300)
        self.setWindowTitle("QInputDialog Demo")
        
        
    def getItem(self):
        items = ("C", "C++", "Java", "Python", "C#")
        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))
    def getDouble(self):
        num,ok = QInputDialog.getDouble(self, "double input dialog", "输入浮点数")
        if ok:
            self.le4.setText(str(num))

    
if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MyInputDialogWindow()
    win.show()
    sys.exit(app.exec_())

在这里插入图片描述

QFontDialog

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

class MyFontDialogDemo(QWidget):
    def __init__(self, parent=None):
        super(MyFontDialogDemo, self).__init__(parent)
        layout = QVBoxLayout()
        self.fontButton = QPushButton("选择字体")
        self.fontButton.clicked.connect(self.getFont)
        layout.addWidget(self.fontButton)
        self.fontLineEdit = QLabel("Hello,测试字体Demo")
        layout.addWidget(self.fontLineEdit)
        self.setLayout(layout)
        self.setWindowTitle("Font Dialog Demo")

    def getFont(self):
        font, ok = QFontDialog.getFont()
        if ok:
            self.fontLineEdit.setFont(font)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MyFontDialogDemo()
    win.show()
    sys.exit(app.exec_())

在这里插入图片描述

QFileDialog

import sys

from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

class filedialogDemo(QWidget):
    def __init__(self, parent=None):
        super(filedialogDemo, self).__init__(parent)
        layout = QVBoxLayout()
        self.btn = QPushButton("加载图片")
        self.btn.clicked.connect(self.getfile)
        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 Dialog Demo")
        
    def getfile(self):
        fname, aa = 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')
            with f:
                data = f.read()
                self.contents.setText(data)
                f.close()
                
if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = filedialogDemo()
    win.show()
    sys.exit(app.exec_())

在这里插入图片描述

QColorDialog

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

class MyColorDialogWindow(QWidget):
    def __init__(self, parent=None):
        super(MyColorDialogWindow, self).__init__(parent)

        self.palette = QPalette()
        layout = QVBoxLayout()
        self.btn1 = QPushButton("设置背景颜色")
        self.btn1.clicked.connect(self.onSetBgColorClicked)
        layout.addWidget(self.btn1)

        self.btn2 = QPushButton("设置文本颜色")
        self.btn2.clicked.connect(self.onSetTxtColorClicked)
        layout.addWidget(self.btn2)

        self.label = QLabel("测试文本内容")
        self.label.setFixedSize(150, 50)
        self.label.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.label)

        self.resize(380, 150)
        self.setWindowTitle("QColorDialog Demo")
        self.setLayout(layout)

    def onSetBgColorClicked(self):
        color = QColorDialog.getColor()
        self.palette.setColor(QPalette.Window, color)
        self.label.setAutoFillBackground(True)
        self.label.setPalette(self.palette)
        
    def onSetTxtColorClicked(self):
        color = QColorDialog.getColor()
        r,g,b,_ = color.getRgb()
        self.label.setStyleSheet("color:rgb({},{},{},255)".format(r,g,b))

        #self.palette.setColor(QPalette.WindowText, color)
        #self.label.setPalette(self.palette)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MyColorDialogWindow()
    win.show()
    sys.exit(app.exec_())

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构之插入排序

插入排序 一种思想我们所在指向位是需要进行插入的数据 我们锁指向位置前的数据是被插入的数据组 我们根据与前面的数据元素一个个比较来确定插入位置的排序 比如现在的76比前面的97小,97进行一个右移,就是赋值给data[4](我这里猜测是76应该是…

QT 介绍

QT 介绍 Qt是一个跨平台的 C 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。且完全面向对…

项目实战——匹配系统(上)

ps:从这篇文章开始,整个项目最精华(困难)的部分就要来了,因此这里会把每一个步骤细分,并且说一下自己对于每个步骤的思考和理解(博主水平有限,错误在所难免,欢迎指出讨论…

MyBatis-Plus(第一篇开山篇)

MyBatis-Plus(第一篇开山篇) 目录MyBatis-Plus(第一篇开山篇)结论:使用mybatis plus步骤1.导包2.整合(修改spring-dao配置文件)3.使用3.1 javaBean3.2 mapper层3.3 service层3.3.1 service接口3.3.2 service实现类3.4 …

【MEF:深度感知增强(细节增强:色彩映增强)】

Multi-exposure image fusion via deep perceptual enhancement (基于深度感知增强的多曝光图像融合) 多曝光图像融合 (MEF) 是通过将具有不同曝光的多个镜头集成在一起来解决此问题的有效方法,这在本质上是一个增强问题。在融合过程中&…

IDEA最实用的设置

​ 目录 全局设置 全局设置 选择 Configure->settings进入设置界面 1.设置主题 2.设置编码区的字体及大小 3.设置控制台的字体及大小 4.修改编码方式 解决有时我们在导入项目时,代码中的中文注释变成乱码问题。 5.设置按住Ctrl鼠标滚轮改变字体大小 6.设置…

Java基础深化和提高 ---- 函数式编程 Lambda

Lambda表达式介绍 Lambda简介 Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内 部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作 中,可以极大地优化代码结构。 在Java语言中,可以为变量赋予一…

计算机网络-传输层(TCP可靠传输(校验,序号,确认,重传),TCP流量控制,TCP拥塞控制(慢开始,拥塞避免)(快重传,快恢复))

文章目录1. TCP可靠传输2. TCP流量控制3. TCP拥塞控制1. TCP可靠传输 网络层:提供尽最大努力交付,不可靠传输。 传输层:使用TCP实现可靠传输 可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。 TCP可…

redis 哨兵

哨兵可以帮助我们解决主从架构中的单点故障问题 哨兵的配置: 新建目录:usr/local/docker/redis/sen/ docker-compose.yml文件如下 version: "3.1" services:redis1:image: daocloud.io/library/redis:5.0.7restart: alwayscontainer_name: …

STL技巧大赏

STL技巧大赏 map insertinsertinsert 不允许有重复的键值的,如果新插入的键值与原有的键值重复则插入无效beginbeginbeginendendendclearclearclear 清除所有countcountcount 某个元素出现次数lower/upperboundlower/upper boundlower/upperbound set 比 mapmapm…

半导体新能源智能装备上位机工业软件设计方案

一、什么是上位机软件 如果说PLC是工业控制的小脑,那么上位机软件就是其大脑。在概念上,控制者和提供服务者是上位机,被控制者和被服务者是下位机,上位机往往是数字信号的处理和命令的下发,下位机往往是模拟量的处理和…

【Linux】初识系统调用进程状态

文章目录1. 什么是系统调用1.1 通过系统调用获取进程标示符通过其他方式查看PIDTopPS使用PID1.2 通过系统调用创建进程-fork初识2. 进程状态看看Linux内核源代码怎么定义查看状态Z(zombie)-僵尸进程僵尸进程危害孤儿进程1. 什么是系统调用 在linux中,系统调用是指操…

[附源码]java毕业设计校园志愿者服务管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Node_exporter主机探针部署

部署需求分析 使用ansible批量部署node-exporter监控客户端 node-exporter解压安装目录为home 添加至Linux服务重新加载,启动模块并设置开机启动 测试环境(centos 7——3.10.0-1160.el7.x86_64)运行成功 因为部署步骤较少,单个pla…

主从延迟读写不一致解决方案分析

具体业务场景方案分析 问题背景: 虽然强制走写库,避免了主从延迟带来的读库数据不一致问题,但是增加了写库的QPS,带来了巨大压力,所以通过限流来保护db,但这样会降低QPS。 业务上暂时不清楚,所…

[附源码]java毕业设计校园新闻管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

转铁蛋白修饰脂质体定制,Transferrin-Liposome

人转铁蛋白(Human Transferrin)主要在肝脏合成,是由位于同源N-端和C-端的两个叶片(Lobe)组成的一种单链糖蛋白。人转铁蛋白共含678个氨基酸残基,等电点为5.9、分子量为76kD。每分子的转铁蛋白能携带2个三价…

Mybatsi从入门到精通、从精通到卸载,这一篇就足够了【中篇】

资料下载 链接: https://pan.baidu.com/s/1i_D3hSkMElUyxBC0OJqRRg?pwdthg4提取码: thg4 简介 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简…

深度学习入门(四十七)计算机视觉——SSD和YOLO简介

深度学习入门(四十七)计算机视觉——SSD和YOLO简介前言计算机视觉——SSD和YOLO简介课件(单发多框检测SSD)生成锚框SSD模型效果总结课件(YOLO)YOLO(你只看一次)效果前言 核心内容来…

nvm的下载,安装与使用详解

一、安装nodejs方式有很多种 第一种:官网下载  通过nodejs官网下载安装 ,但有个缺陷,不同版本的nodejs无法顺利的切换。 第二种: NVM安装  NVM可以帮助我们快速切换 node版本。 二、 下载nvm安装包 官方下载地址:http://​ h…