PyQt5基础练习2

news2024/9/22 19:35:31

实验4 关闭窗口

4.1 完整代码

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial

This example shows a tooltip on
a window and a button.

Author: Jan Bodnar
Website: zetcode.com
Last edited: August 2017
"""

import sys
from PyQt5.QtWidgets import (QWidget, QToolTip,
                             QPushButton, QApplication)
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QCoreApplication


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        QToolTip.setFont(QFont('SansSerif', 10))
        self.setToolTip('This is a <b>QWidget</b> widget')

        # 这里的内容是button进行设置
        btn = QPushButton('exit', self) # 实例化btn
        btn.setToolTip('This is a <b>QPushButton</b> widget') # 设置btn提示框
        btn.resize(btn.sizeHint()) # 使用sizehint方法设置默认btn的大小
        btn.move(50, 50) # 将btn放到合适的位置

        # 设置btn的触发事件
        btn.clicked.connect(QCoreApplication.instance().quit)

        # 这是对窗体进行设置
        self.setGeometry(300, 300, 300, 200)  # 这条语句相当于resize()和move()两条语句
        self.setWindowTitle('wgw')  # 设置好窗口的标题
        self.show()


# 请你写一个程序的入口程序,3q
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

4.2 要点解释

事件传递系统在PyQt5内建的singleslot机制里面。

  • 点击按钮之后,信号会被捕捉并给出既定的反应
  • QCoreApplication包含了事件的主循环,它能添加和删除所有的事件,instance()创建了一个它的实例。
  • QCoreApplication是在QApplication里创建的。
  • 点击事件和能终止进程并退出应用的quit函数绑定在了一起。在发送者和接受者之间建立了通讯,发送者就是按钮,接受者就是应用对象。

实验5 让用户二次确认的消息盒子

5.1 完整代码

import sys
from PyQt5.QtWidgets import QWidget, QMessageBox, QApplication


class Example(QWidget):

    def __init__(self):
        print('构造函数开始执行')
        super().__init__()

        self.initUI()
        print('构造函数执行完毕')

    def initUI(self):
        print('正在初始化UI')
        self.setGeometry(700, 400, 300, 250)
        self.setWindowTitle('Practice5')

        self.show()
        print('初始化UI结束')

    def closeEvent(self, event):

        # 弹出提示框
        reply = QMessageBox.question(self, 'Message', 'Are you want to quit?',
                                     QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


# 程序入口程序
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

5.2 要点解释

如果关闭QWidget,就会产生一个QCloseEvent

  • 并且把它传入到closeEvent函数的event参数中。
  • 改变控件的默认行为,就是替换掉默认的事件处理。

在这里插入图片描述

根据相关函数提示进行学习

实验6 实现窗口居中

6.1 完整代码

import sys
from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication


class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        print('初始化UI的函数执行')
        self.resize(450, 300)
        self.move(300, 300)
        self.setWindowTitle('test6')

        self.center() # 调用居中函数让组件完成居中
        self.show()

    def center(self):
        print('窗体居中的函数执行')

        qr = self.frameGeometry()  # 获得主窗口所在的框架。
        cp = QDesktopWidget().availableGeometry().center() # 获取显示器的分辨率,然后得到屏幕中间点的位置。
        qr.moveCenter(cp) # 然后把主窗口框架的中心点放置到屏幕的中心位置。

        # 真正移动窗口的语句在这里
        self.move(qr.topLeft())

# 程序入口程序
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

6.2 要点学习

主窗口和框架不是一回事? 确实是的

我们做的事情

  1. 获得主窗口所在的框架
  2. 获得屏幕中心点的位置
  3. 将主窗口框架中点放到屏幕中央
  4. 将主窗口移动到框架左上角

编程习惯

在这里插入图片描述
注意函数得到的返回值的类型要对应上

最好是要有见名知意的效果

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

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

相关文章

推荐系统在腾讯游戏运营中的实践

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2022年10月份热门报告盘点2021-2022元宇宙报告.pdf清华大学256页PPT元宇宙研究报告.pdf&#xff08;附下载链接&#xff09;机器学习在B站推荐系统中的应用实践小红书推荐系统…

【Matplotlib绘制图像大全】(三十):Matplotlib绘制时间线图

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

[附源码]计算机毕业设计医疗纠纷处理系统Springboot程序

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

在浏览器中运行 TensorFlow.js 来训练模型并给出预测结果(Iris 数据集)

文章目录开发环境构建第一个 TensorFlow.js 模型构建鸢尾花数据集分类器References在 《TensorFlow Lite 是什么&#xff1f;用 TensorFlow Lite 来转换模型&#xff08;附代码&#xff09;》中我们已经介绍了可以帮助 TensorFlow 模型在移动设备以及嵌入式设备中运行的 Tensor…

YMTC X3 NAND 232L 终露真容,全球领先|国产芯之光

上一篇文章&#xff08;芯片级解密YMTC NAND Xtacking 3.0技术&#xff09;&#xff0c;我们结合TechInsights获取芯片级信息梳理了国产NAND芯片厂商YMTC的技术演进之路&#xff0c;从2016公司成立&#xff0c;2018年发布Xtacking 1.0 NAND架构&#xff0c;2019年发布Xtacking …

Kotlin高仿微信-第58篇-开通VIP

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点&#xff0c;包括&#xff1a;注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

[附源码]计算机毕业设计springboot疫情网课管理系统

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

微信小程序| 做一款多人实时线上的五指棋联机游戏

&#x1f4cc;个人主页&#xff1a;个人主页 ​&#x1f9c0; 推荐专栏&#xff1a;小程序开发成神之路 --【这是一个为想要入门和进阶小程序开发专门开启的精品专栏&#xff01;从个人到商业的全套开发教程&#xff0c;实打实的干货分享&#xff0c;确定不来看看&#xff1f; …

[附源码]计算机毕业设计新能源汽车租赁Springboot程序

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

[附源码]计算机毕业设计疫情物资管理系统Springboot程序

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

微信支付商户平台-配置密钥/API安全教程

我们在做小程序获取微信开发时&#xff0c;难免会用到微信支付&#xff0c;我们做微信支付时&#xff0c;商户id和密匙是必不可少的。商户id很容易就能获取到。但是这个密匙的配置就相对而言麻烦了一点。今天就来教大家如何配置位置支付的密匙。 先我们要去注册微信支付的账号…

Lattice库联合ModelSim仿真FIFO

Lattice联合ModelSim仿真FIFO前言一、添加IP二、库文件添加&#xff08;一&#xff09;方式一&#xff1a;添加器件库到ModelSim&#xff08;二&#xff09;方法二&#xff1a;直接添加器件库到Libray,和tb.v在同一个目录下仿真三、仿真&#xff08;一&#xff09;仿真文件&…

JAVA社区疫情防控系统毕业设计,社区疫情防控管理系统设计与实现,毕设作品参考

功能清单 【后台管理员功能】 关于我们设置&#xff1a;设置学校简介、联系我们、加入我们、法律声明、学校详情 广告管理&#xff1a;设置小程序首页轮播图广告和链接 留言列表&#xff1a;所有用户留言信息列表&#xff0c;支持删除 会员列表&#xff1a;查看所有注册会员信…

b站黑马JavaScript的Ajax案例代码——新闻列表案例

目录 目标效果&#xff1a; 重点原理&#xff1a; 1.js中art-template标准语法的循环输出 2.js中split方法——转换字符串为数组 3.js中art-template标准语法的过滤器 4.js中Date内置对象——getFullYear() 5.js中Date内置对象——getMonth() 6.js中Date内置对象——ge…

简单认识一下HotSpot 垃圾收集器

前言 HotSpot 虚拟机提供了多种垃圾收集器&#xff0c;每种收集器都有各自的特点&#xff0c;虽然我们要对各个收集器进行比较&#xff0c;但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。 新生代垃圾收集器 Serial 垃圾收集器&#xff08;单线…

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver解决方案

&#x1f31f;问题解析 首先&#xff0c;此报错会出现在两种情况&#xff0c;并且有各自的解决方法。 如果在Java程序中报错&#xff0c;那么我们就参考方法1&#xff08;单Java程序&#xff09;&#xff1a; 如果你是在Tomcat中报错&#xff0c;那么我们可以参考方法2&#…

[附源码]JAVA毕业设计交通事故档案管理系统(系统+LW)

[附源码]JAVA毕业设计交通事故档案管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…

微信小程序实现微信支付的相关操作设置

本文不涉及相关API的实现&#xff0c;旨在记录实现微信支付需要在微信公众平台和微信支付的商户平台需要进行的操作。 1.首先需要用户申请了微信小程序和入驻微信商户平台 2.获取小程序的appid 设置AppSecre小程序密钥 3.微信支付获取商户号&#xff0c;在认证的时候设置操…

基于JavaSwing的员工工资管理系统

开发环境 eclipsejdk1.8mysql5.7 系统简介 本项目是主要功能有员工信息管理&#xff0c;部门信息管理&#xff0c;员工工资设定&#xff0c;系统设置等&#xff0c;员工不需要登录系统&#xff0c;可以直接查询自己的工资&#xff0c;具体项目操作及项目结构请看演示视频&am…

架构解析:Dubbo3 应用级服务发现如何应对双 11 百万集群实例

继业务全面上云后&#xff0c;今年双 11&#xff0c;阿里微服务技术栈全面迁移到以 Dubbo3 为代表的云上开源标准中间件体系。在业务上&#xff0c;基于 Dubbo3 首次实现了关键业务不停推、不降级的全面用户体验提升&#xff0c;从技术上&#xff0c;大幅提高研发与运维效率的同…