vbs获取程序窗体句柄_PyQt5 GUI程序的基本框架

本节先通过一个简单的示例程序介绍PyQt5 GUI应用程序的基本框架。

启动Python自带的编程和交互式环境IDLE,点击“File”→“New File”菜单项,打开一个文件编辑窗口,在此窗口中输入下面的程序,并保存为文件demo2_1Hello.py,此文件保存在随书示例Demo2_1目录下。

## demo2_1Hello.py## 使用PyQt5,纯代码化创建一个简单的GUI程序import sysfrom PyQt5 import QtCore, QtGui, QtWidgetsapp = QtWidgets.QApplication(sys.argv) #创建app,用QApplication类widgetHello = QtWidgets.QWidget() #创建窗体,用QWidget类widgetHello.resize(280,150) #设置窗体的宽度和高度widgetHello.setWindowTitle("Demo2_1") #设置窗体的标题文字LabHello = QtWidgets.QLabel(widgetHello) #创建标签,父容器为widgetHelloLabHello.setText("Hello World,PyQt5") #设置标签文字font = QtGui.QFont() #创建字体对象font,用QFont类font.setPointSize(12) #设置字体大小font.setBold(True) #设置为粗体LabHello.setFont(font) #设置为标签LabHello的字体size=LabHello.sizeHint() #获取LabHello的合适大小,返回值是QSize类对象LabHello.setGeometry(70, 60, size.width(), size.height())widgetHello.show() #显示对话框sys.exit(app.exec_()) #应用程序运行

程序输入完成后,在程序编辑器窗口中点击“Run”→“Run Module”菜单项,或直接按快捷键F5就可以运行程序,会出现图2-1所示的窗口。

37590e2a1e6a38337aad03d03fabb34a.png

图2-1 文件demo2_1Hello.py运行结果窗口

这是一个典型的GUI应用程序。观察文件demo2_1Hello.py的代码,并结合程序中的注释,可以看出此程序的基本工作原理。

(1)首先导入了PyQt5包中的一些模块,包括QtCore,QtGui,QtWidgets,其中每个模块都包含了一些类。

(2)用下面的语句创建了一个应用程序。

app = QtWidgets.QApplication(sys.argv)

这里用到了QtWidgets模块中的QApplication类。QApplication是管理GUI应用程序的控制流程和设置的类,这里创建的应用程序对象是app。

(3)使用QtWidgets模块中的QWidget类创建了窗体对象widgetHello,然后调用QWidget类的resize()函数设置窗体大小,调用setWindowTitle()函数设置窗体标题。

(4) 使用QtWidgets模块中的QLabel类创建了一个标签对象LabHello,创建LabHello的语句是:

LabHello = QtWidgets.QLabel(widgetHello)

这里将widgetHello作为参数传递给QLabel的构造函数,实际是指定widgetHello作为LabHello的父容器,这样标签LabHello才会显示在窗体widgetHello上。

后面的代码用QLabel的接口函数setText()设置标签的文字,又创建了一个QFont对象用于设置标签的字体,还设置了标签在窗体上的位置和大小。

(5)窗体显示和程序运行。

窗体widgetHello和文字标签LabHello创建并设置好各种属性后,就显示窗体并运行应用程序,即程序中的最后两行语句:

widgetHello.show()sys.exit(app.exec_())

这里的窗体widgetHello是应用程序的主窗体,应用程序运行后开始消息管理。

这个示例程序演示了使用PyQt5的一些类创建GUI程序的基本过程。首先需要用QApplication类创建一个应用程序实例,然后创建一个窗体(窗体类主要有QWidget、QDialog、QMainWindow),再创建界面组件(例如一个QLabel组件)并在窗体上显示,最后是显示窗体并开始应用程序的消息循环。这个程序虽然功能很简单,只显示了一个带标签的窗口,关闭窗口还需要点击窗口右上角的关闭按钮,但它已经是一个标准的GUI应用程序。

提示 从上面的程序中可以看出,PyQt5中的类都是以大写字母Q开头命名的,如QWidget、QApplication、QLabel等,这样的命名规则很容易将PyQt5的类与其他的类或变量区分开来。

3bc408ced2c00757f5413ab2431a2ced.png

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

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

相关文章

【学神】1-4 用户及用户组管理

用户及用户组管理本节所述内容:用户和组的相关配置文件管理用户和组 进入单用户模式找回root身份一、用户和组的相关配置文件1.用户的分类(1)根据帐号的位置:本地帐号、远程(域)帐号、LDAP&…

阿里REDIS优化

转载于:https://www.cnblogs.com/isoftware/p/3745956.html

vb子程序未定义怎么改怎么办_煤粉输送不畅、秤不稳怎么办?多家企业这样改!...

摘要: CWF型煤粉转子喂料系统优点在于运行稳定、精度高,一致以来受到用户的青睐,但其对煤粉要求也高,尤其是水分含量,直接影响给料的稳定性和受控性。各种非正常因素对测控的影响较大,容易造成下料不畅、波动等现象,下…

SQL Server实现读写分离提高系统并发

转自:http://www.canway.net/Lists/CanwayOriginalArticels/DispForm.aspx?ID666 在一些大型的网站或者应用中,单台的SQL Server 服务器可能难以支撑非常大的访问压力。很多人在这时候,第一个想到的就是一个解决性能问题的利器——负载均衡。…

php如何获取网址中的参数

https://zhidao.baidu.com/question/140978452.html 比如有一个网址为 http://域名/goods.php?u59&id24#pinglun 我想得到这个id值 可以用正则,也可以用php函数解析到数组中 用正则可以这样 preg_match(/id(\d)/,$_SERVER["REQUEST_URI"],$m);//$_SERVER 这…

.net core 引用jar_Python一键转Jar包,Java调用Python新姿势!

粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文。言归正传,咱们开始吧!今天的这篇文章,聊一个轩辕君之前工作中遇到的…

PHP版本的区别

2019独角兽企业重金招聘Python工程师标准>>> 以为这个已经写过了,发现没有,赶紧补充下。 PHP的版本,自从进入5以后,发布新版本速度明显提升很多,从PHP5.2开始,5.3 、5.4 、5.5,就快要…

1515 跳 - Wikioi

题目描述 Description邪教喜欢在各种各样空间内跳。现在,邪教来到了一个二维平面。在这个平面内,如果邪教当前跳到了(x,y),那么他下一步可以选择跳到以下4个点:(x-1,y), (x1,y), (x,y-1), (x,y1)。而每当邪教到达一个点&#xff0…

快速格式化的DOS命令是什么?

https://zhidao.baidu.com/question/3269005.html Dos下的format命令是用来进行格式化的。 FORMAT A:或c:, d:等等,后面可以加一些参数 比如FORMAT A: /S 这是格式化并追加系统。也就是制作一个简单的启动盘。 如果给硬盘进行格式化(重装系统前的准备工…

ADT-bundle

eclipse 弹出 Version 1.4.2_03 of the JVM not suitable for this product.Version1.6or geeater is requir 原因jdk版本过低,需更换高版本 ADT-bundle-linux-X86 解压后有两个文件夹eclipse 和sdk 注意:adb命令在platform-tools下 解压后还需修改sdk的…

合并两个有序链表算法(leetcode第21题)

题目描述: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1:输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2:输入:l1 [], l2 [] 输…

修改maven本地仓库位置

2019独角兽企业重金招聘Python工程师标准>>> 首先需要安装好&#xff0c;假设安装位置在&#xff1a;D:\****\maven\apache-maven-3.3.3修改本地仓库位置&#xff0c;打开配置文件&#xff1a;D:\****\maven\apache-maven-3.3.3\conf\settings.xml<!-- localRepo…

iOS sqlite

iOS sqlite数据库操作。步骤是&#xff1a; 先加入sqlite开发库libsqlite3.dylib&#xff0c; 新建或打开数据库&#xff0c; 创建数据表&#xff0c; 插入数据&#xff0c; 查询数据并打印 1、新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib 2、sqlite 的方法 sqlite…

ad如何设置pcb板子形状_手把手教你在PCB上添加泪滴

泪滴(Teardrops)在PCB电路板设计中&#xff0c;为了让焊盘更坚固&#xff0c;防止机械制板时焊盘与导线之间断开&#xff0c;常在焊盘和导线之间用铜膜布置一个过渡区&#xff0c;形状像泪滴&#xff0c;故常称做补泪滴&#xff08;Teardrops&#xff09;。泪滴的作用避免电路板…

华为云hcip认证试题_首信AAA认证计费系统通过华为云兼容性认证,成为华为认证级ISV伙伴...

点击上方“蓝字”关注我们首信AAA认证计费系统软件3.0在2020年9月24日通过华为云Stack 6.5(鲲鹏)的兼容性测试&#xff0c;最终获得华为技术认证书及HUAWEI COMPATEBLE相关认证徽标使用权。同时&#xff0c;首信科技获得华为认证级ISV伙伴认证证书。本次获得的产品兼容性认证及…

Netty4.x中文教程系列(二) Hello World !

在中国程序界。我们都是学着Hello World !慢慢成长起来的。逐渐从一无所知到熟悉精通的。 第二章就从Hello World 开始讲述Netty的中文教程。 首先创建一个Java项目。引入一个Netty 框架的包。这个步骤我在本系列教程的后面就不在重复了。 先上一张我示例的项目工程图给大家看一…

jq金钱如何加千分位_拼多多如何玩转场景推广

首先&#xff0c;我们先弄明白拼多多场景推广的展示以及扣费规则&#xff1a;排名规则&#xff1a;综合排名商品质量分广告出价。商品质量分点击率转化率销量交易额。扣费规则&#xff1a;扣费&#xff08;下一位的出价*下一位的商品素材点击率&#xff09;/自己的商品素材点击…

硬盘安装win10,笔者教你如何一步步从硬盘安装win10系统

https://www.ghostxpsp3.net/czxtjc/12280.html 对于没有U盘系统和光驱的用户来说&#xff0c;使用硬盘安装系统&#xff0c;无疑是最好的解决方案。今天笔者教你如何一步步从硬盘安装win10系统&#xff0c;笔者教你如何一步步从硬盘安装win10系统要保证在能进入系统的前提下进…

prometheus命令_Prometheus入门教程(一):Prometheus 快速入门

点击蓝色“陈树义”关注我哟Prometheus 是任何一个高级工程师必须要掌握的技能。那么如何从零部署一套 Prometheus 监控系统呢&#xff1f;本篇文章将从 Prometheus 的原理讲起&#xff0c;手把手带你用一个最简单的例子部署一套 Prometheus 监控系统。基本原理Prometheus 的基…

Java不定参数

先看两个简单的例子&#xff0c;来感受一下Java的不定长度参数 第一个例子&#xff1a; Java代码 public class VariArgs { public static void main(String[] args) { test(); test("aaa"); test("aaa", "bbb&q…