在PyQt6教程的这一部分中,我们将学习一些基本的功能。这些示例显示了一个提示信息和一个图标,关闭一个窗口,显示一个消息框,并在桌面上显示一个窗口。

PyQt6简单的例子

这是一个显示小窗口的简单示例。然而,我们可以利用这个窗口做很多事情。我们可以调整它的大小,最大化或最小化。这需要大量的编码。有人已经编写了这个功能。因为它在大多数应用程序中都是重复的,所以不需要重新编写代码。PyQt6是一个高级工具包。如果我们在较低级别的工具包中编写代码,下面的代码示例很容易有数百行代码。

import sys
from PyQt6.QtWidgets import QApplication, QWidgetdef main():app = QApplication(sys.argv)w = QWidget()w.resize(250, 200)w.move(300, 300)w.setWindowTitle('Simple')w.show()sys.exit(app.exec())if __name__ == '__main__':main()

上面的代码示例在屏幕上显示了一个小窗口。

import sys
from PyQt6.QtWidgets import QApplication, QWidget

这里我们提供了必要的导入。基本控件位于PyQt6中。QtWidgets模块。

app = QApplication(sys.argv)

每个PyQt6应用程序都必须创建一个应用程序对象。sys.Argv参数是来自命令行的参数列表。Python脚本可以从shell运行。这是我们控制脚本启动的一种方式。

w = QWidget()

QWidget控件是PyQt6中所有用户接口对象的基类。我们为QWidget提供了默认构造函数。默认构造函数没有父类。没有父组件的控件称为窗口。

w.resize(250, 150)

resize方法调整控件的大小。它是250px宽,150px高。

w.move(300, 300)

move方法将控件移动到屏幕上坐标为x=300, y=300的位置。

w.setWindowTitle('Simple')

我们使用setWindowTitle设置窗口的标题。标题显示在标题栏中。

w.show()

show方法将控件显示在屏幕上。控件首先在内存中创建,然后显示在屏幕上。

sys.exit(app.exec())

最后,我们进入应用程序的主循环。事件处理从这里开始。主循环从窗口系统接收事件,并将它们分派给应用程序控件。如果我们调用exit方法,或者主控件被关闭,则主循环结束。sys.exit方法确保完全的退出。将告知环境应用程序是如何结束的。

PyQt6提示信息

我们可以为任何控件提供气泡帮助。

import sys
from PyQt6.QtWidgets import (QWidget, QToolTip,QPushButton, QApplication)
from PyQt6.QtGui import QFontclass 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')btn = QPushButton('Button', self)btn.setToolTip('This is a <b>QPushButton</b> widget')btn.resize(btn.sizeHint())btn.move(50, 50)self.setGeometry(300, 300, 300, 200)self.setWindowTitle('Tooltips')self.show()def main():app = QApplication(sys.argv)ex = Example()sys.exit(app.exec())if __name__ == '__main__':main()

在这个例子中,我们展示了两个PyQt6控件的提示信息。

QToolTip.setFont(QFont('SansSerif', 10))

此静态方法设置用于呈现提示信息的字体。我们使用10pt SansSerif字体。

self.setToolTip('This is a <b>QWidget</b> widget')

要创建提示信息,我们调用setTooltip方法。我们可以使用富文本格式。

btn = QPushButton('Button', self)
btn.setToolTip('This is a <b>QPushButton</b> widget')

我们创建一个按钮部件并为它设置一个工具提示。

btn.resize(btn.sizeHint())
btn.move(50, 50)

调整窗口上按钮的大小和移动。sizeHint方法给出了按钮的推荐大小。

PyQt6退出按钮

关闭窗口最明显的方法是单击标题栏上的x标记。在下一个示例中,我们将展示如何以编程方式关闭窗口。我们将简要地讨论信号和槽。

下面是我们在示例中使用的QPushButton控件的构造函数。

QPushButton(string text, QWidget parent = None)

text参数是将显示在按钮上的文本。parent是放置按钮的控件。在我们的例子中,它将是一个QWidget。应用程序的控件形成了层次结构。在这个层次结构中,大多数控件都有它们的父控件。没有父控件的控件是顶层窗口。

import sys
from PyQt6.QtWidgets import QWidget, QPushButton, QApplicationclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):qbtn = QPushButton('Quit', self)qbtn.clicked.connect(QApplication.instance().quit)qbtn.resize(qbtn.sizeHint())qbtn.move(50, 50)self.setGeometry(300, 300, 350, 250)self.setWindowTitle('Quit button')self.show()def main():app = QApplication(sys.argv)ex = Example()sys.exit(app.exec())if __name__ == '__main__':main()

在本例中,我们创建了一个退出按钮。单击按钮后,应用程序终止。

qbtn = QPushButton('Quit', self)

我们创造了一个按钮。按钮是QPushButton类的一个实例。构造函数的第一个参数是按钮的标签。第二个参数是父控件。父控件是Example控件,它继承自QWidget。

qbtn.clicked.connect(QApplication.instance().quit)

PyQt6中的事件处理系统是用信号&槽机制构建的。如果我们点击按钮,就会发出被点击的信号。槽可以是Qt槽或任何Python可调用对象。

QCoreApplication,它是用QApplication.instance检索的。包含主事件循环——它处理和分派所有事件。单击的信号连接到终止应用程序的quit方法。通信是在两个对象之间完成的:发送方和接收方。发送方是按钮,接收方是应用程序对象。

PyQt6消息框

默认情况下,如果我们单击标题栏上的x按钮,QWidget是会关闭的。有时我们想要修改这个默认行为。例如,如果我们在编辑器中打开了一个文件,我们对它做了一些更改。我们将显示一个消息框来确认操作。

import sys
from PyQt6.QtWidgets import QWidget, QMessageBox, QApplicationclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(300, 300, 350, 200)self.setWindowTitle('Message box')self.show()def closeEvent(self, event):reply = QMessageBox.question(self, 'Message',"Are you sure to quit?", QMessageBox.StandardButton.Yes |QMessageBox.StandardButton.No, QMessageBox.StandardButton.No)if reply == QMessageBox.StandardButton.Yes:event.accept()else:event.ignore()def main():app = QApplication(sys.argv)ex = Example()sys.exit(app.exec())if __name__ == '__main__':main()

如果我们关闭一个QWidget,就会生成QCloseEvent。要修改控件行为,我们需要重新实现closeEvent事件处理程序。

reply = QMessageBox.question(self, 'Message',  "Are you sure to quit?", QMessageBox.StandardButton.Yes |QMessageBox.StandardButton.No, QMessageBox.StandardButton.No)

我们将显示一个带有两个按钮的消息框:Yes和No。第一个字符串出现在标题栏上。第二个字符串是对话框显示的消息文本。第三个参数指定对话框中出现的按钮组合。最后一个参数是默认按钮。它是最初具有键盘焦点的按钮。返回值存储在reply变量中。

if reply == QMessageBox.StandardButton.Yes:event.accept()
else:event.ignore()

这里我们测试返回值。如果单击Yes按钮,就会接受导致控件关闭和应用程序终止的事件。否则我们将忽略关闭事件。

PyQt6中心窗口

下面的脚本展示了如何在桌面屏幕上居中一个窗口。

import sys
from PyQt6.QtWidgets import QWidget, QApplicationclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.resize(350, 250)self.center()self.setWindowTitle('Center')self.show()def center(self):qr = self.frameGeometry()cp = self.screen().availableGeometry().center()qr.moveCenter(cp)self.move(qr.topLeft())def main():app = QApplication(sys.argv)ex = Example()sys.exit(app.exec())if __name__ == '__main__':main()

QScreen类用于查询屏幕属性。

self.center()

将窗口居中的代码放置在自定义center方法中。

qr = self.frameGeometry()

我们得到一个指定主窗口几何形状的矩形。这包括任何窗口框架。

cp = self.screen().availableGeometry().center()

我们计算出显示器的屏幕分辨率。通过这个分辨率,我们得到了中心点。

qr.moveCenter(cp)

我们的矩形已经有了它的宽和高。现在我们将矩形的中心设置为屏幕的中心。矩形的大小不变。

self.move(qr.topLeft())

我们将应用程序窗口的左上角移动到qr矩形的左上角,从而使窗口在屏幕上居中。

在PyQt6教程的这一部分中,我们已经在PyQt6中创建了简单的代码示例。

PyQt6中的第一个程序相关推荐

  1. Docker之旅:在Docker容器中创建第一个程序

    Docker的概念 Docker是开发人员和系统管理员 使用容器开发,部署和运行应用程序的平台.使用Linux容器来部署应用程序称为集装箱化.容器不是新的事物,但它们用于轻松部署应用程序. 一.测试一 ...

  2. php入门教程 第一个php程序,PHP中的第一个程序

    您几乎可以使用任何您喜欢的文本编辑器,但使用语法突出显示的文本编辑器可以使事 Notepad++是一个方便的Windows小编辑器,具有许多不同语言的语法高亮,包括PHP,HTML,CSS和sql. ...

  3. java中如何运行小程序_一起学java(一)——运行第一个小程序

    接下来的一段时间内会更新一起学java系列,喜欢的关注一下我吧.微信公众号:什么都不懂的大佬:初学,有错误的地方请大家多多指教. ---------------分割线-------------- 一. ...

  4. 程序员如何赚到自己人生中的第一桶金?是100万还会是1000万,大家不妨一起探讨一下!...

    伴随着多年的java开发经验,越来越想着自己出去独立门户要不创业要不干点别的,反正总觉得一直打工么有什么出路,那么作为一个程序员出身的人怎样才能够转到自己人生中的第一桶金那?好多的程序员可能想到的多数 ...

  5. Eclipse中创建第一个窗口程序

      之前在VS中用C#做程序开发时,做的最多的是Winform窗口.现在学习在Eclipse中用java编程序,也希望尽快学习如何写窗口程序,但是在选择Eclipse做开发工具的时候就听说Eclips ...

  6. 在mac中搭建asp.net环境并开发第一个程序

    在mac中搭建asp.net环境并开发第一个程序 一.搭建环境 1.安装.NET Core - 要使用.NET Core首先在终端上安装Openssl 更新homebrew后下载安装openssl $ ...

  7. 整数数组查找java_使用Java编写程序以查找整数数组中的第一个非重复数字?

    查找数组中的第一个非重复数字-构造count数组以将给定数组中每个元素的计数存储为相同长度,且所有元素的初始值为0. 将数组中的每个元素与除自身之外的所有其他元素进行比较. 如果匹配发生,则增加其在计 ...

  8. Shiro第一个程序:官方快速入门程序Qucickstart详解教程

    目录 一.下载解压 二.第一个Shiro程序 1. 导入依赖 2. 配置shiro配置文件 3. Quickstart.java 4. 启动测试 三.shiro.ini分析 四.Quickstart. ...

  9. 元宇宙开发:你在虚幻引擎中的第一个虚拟现实游戏

    了解如何开发零编程背景的Oculus Quest游戏 你会学到什么 为Oculus Quest构建应用程序 设计和开发虚拟现实游戏 在虚幻引擎中工作 使用材料和纹理 优化内容,实现移动和虚拟现实游戏的 ...

最新文章

  1. java抽象工厂设计模式_23种经典设计模式的java实现_1_抽象工厂模式
  2. mysql-5.5.50-winx64
  3. 浏览器自动化操作标准--WebDriver
  4. ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记
  5. 更新——Canvas画布动画效果之实现倒计时
  6. python目标检测答案_入门指南:用Python实现实时目标检测(内附代码)
  7. Python 代码注释
  8. java jdbc 连接mysql数据库 实现增删改查
  9. 后台的Activity被系统回收怎么办?
  10. linux makefile教程,Makefile简单入门教程
  11. 人人开源(后台代码、前端项目、代码自动生成)
  12. duet连win10_该来的总算来了——Apogee Duet全新Windows 10操作指南
  13. 正则表达式——特殊字符(MyBatis)
  14. Repeated column in mapping for entity
  15. android 状态栏为白色的时候图标不显示的解决方案
  16. python symbols函数_Python的武器库07:sympy模块
  17. java不能覆盖父类的_java中子类覆盖父类方法所必须满足的条件
  18. 色彩搭配的原理与避讳
  19. 微信小程序-菜谱APP
  20. [心电图] 贺银成视频笔记

热门文章

  1. 蚂蚁数字科技与梆梆安全达成战略合作 共同构建移动端全链路的安全能力
  2. X86服务器虚拟化的三种技术--(1)
  3. 成都学院计算机专业,科成计算机学院分团委学生会_新浪博客
  4. AT对峙,不止百度出局那么简单
  5. 精典的古代情诗,程序员追MM不可缺少.....
  6. 【TV Picture Quality - 03】TV屏幕解读
  7. elementui表格在行内增删改查
  8. 学习Linux的博客和资源网站
  9. UVA - 1225
  10. reader excelt to db