首页 > 编程语言 >使用Python和Qt6(PySide6)创建GUI应用1简介

使用Python和Qt6(PySide6)创建GUI应用1简介

时间:2023-12-14 09:01:55浏览次数:45  
标签:Qt6 Widget Qt Python GUI 应用程序 PySide6 图形用户界面

1 简介

在本书从GUI开发的基本原理逐步过渡到使用PySide6创建您自己的、功能齐全的桌面应用程序。

1.1 GUI简史

图形用户界面(GUI Graphical User Interface) 历史悠久,可追溯到20世纪60年代。斯坦福大学的NLS(ON-Line 系统引入了鼠标和窗口概念,并于1968年首次公开展示。随后,施乐公司于1973年推出了Smalltalk系统图形用户界面,它是大多数现代通用图形用户界面的基础。

这些早期系统已经具备了我们在现代桌面图形用户界面中视为理所当然的许多功能,包括窗口、菜单、单选按钮、复选框和后来的图标。这些功能的组合为我们提供了这类界面的早期缩写: WIMP(窗口、图标、菜单、指向设备--鼠标 windows, icons, menus, pointing device — a mouse)。

1979年,第一款采用图形用户界面的商用系统PERQ工作站问世。这刺激了其他一些图形用户界面的发展,其中最著名的是苹果公司的Lisa(1983年),它增加了菜单栏和窗口控制的概念。还有许多其他系统,如 Atari ST (GEM)、Amiga。在 UNIX(以及后来的 Linux)上,1984 年出现了 X 窗口系统。第一版 Windows PC 于 1985 年发布。

早期的图形用户界面并不像我们想象的那样一经推出就大受欢迎,原因是当时缺乏兼容的软件,而且硬件要求昂贵,尤其是对家庭用户而言。随着时间的推移,图形用户界面逐渐成为人们与电脑交互的首选方式,WIMP隐喻也被牢固地确立为标准。这并不是说没有人试图在桌面上取代WIMP。例如,微软公司在 1995年推出的 Microsoft Bob(微软鲍勃),就是微软公司试图用房子来取代桌面的尝试。

从推出Windows 95(1995 年)到Mac OS X(2001 年)、GNOME Shell(2011 年)和 Windows 10(2015 年),不乏其他被誉为革命性的图形用户界面。这些系统都对各自桌面系统的用户界面进行了大刀阔斧的改革,而且往往大张旗鼓。但从根本上说,并没有什么真正的改变。这些新的用户界面在很大程度上仍然是WIMP系统,其功能与20世纪80年代以来的图形用户界面完全相同。

革命自触摸,窗口被全屏应用程序取代。但大量的日常工作仍然是在台式电脑上完成的。WIMP经历了40年的创新,并有望继续走下去。

1.2 QT简介

Qt是一个免费的开源widget工具包,用于创建跨平台图形用户界面应用程序,允许应用程序使用单一代码库针对Windows、macOS、Linux和Android等多个平台。但Qt远不止是widget工具包,它还内置了对多媒体、数据库、矢量图形和MVC界面的支持,将其视为应用程序开发框架更为准确。

Qt由Eirik Chambe-Eng 和 Haavard Nord于1991 年创立,并于1994年成立了第一家Qt公司Trolltech。Qt目前由The Qt Company开发,并继续定期更新,增加功能,扩展移动和跨平台支持。

1.2.1 Qt和PySide6

PySide6也称为Qt for Python,是Qt工具包的Python绑定,目前由Qt公司开发。当您使用PySide6编写应用程序时,您实际上是在用Qt编写应用程序。PySide6库只是C++ Qt 库的一个封装,可在Python中使用它。

PySide6中使用的命名约定并不符合PEP8标准。最值得注意的是,函数和变量使用mixedCase而不是 snake_case来命名。你是否在自己的应用程序中遵循这一标准完全取决于你自己,但我发现遵循Python标准很有帮助,有助于明确PySide6代码的终点和你自己代码的起点。

最后,虽然有PySide6的特定文档,但你经常会发现自己在阅读Qt文档,因为它更完整。

1.2.2 Pythonic PySide6

在Python中,特性导入用于控制代码的全局行为。在Qt 5.15中引入了一项功能,使Qt对象可以使用蛇形变量名和方法名。在Qt6中,这一功能被扩展为支持从Python代码直接访问Qt属性,而不是使用 getter/setter 函数。下面的示例代码显示了这些变化对代码的影响 - 清单 1.

  • 标准 PySide6 代码。
table = QTableWidget()
table.setColumnCount(2)

button = QPushButton("Add")
button.setEnabled(False)

layout = QVBoxLayout()
layout.addWidget(table)
layout.addWidget(button)

同样的代码,但启用了snake_case和true_property。

from __feature__ import snake_case, true_property

table = QTableWidget()
table.column_count = 2

button = QPushButton("Add")
button.enabled = False

layout = QVBoxLayout()
layout.add_widget(table)
layout.add_widget(button)

这些功能有助于Qt代码更加Pythonic,通过遵循Python代码风格标准来提高代码的可读性。

参考资料

1.3 补充知识:Widget

在计算机科学和软件开发领域,Widget(小部件)是指用户界面中的一个可视化组件或控件,用于显示信息、接收用户输入或执行特定的功能。Widget通常是图形用户界面(GUI)中的一个可交互的元素,可以是按钮、文本框、下拉菜单、滑块等。

Widget的主要目的是提供用户与应用程序或系统之间的交互方式,使用户能够与应用程序进行操作、输入数据或获取信息。通过使用不同类型的Widget,开发人员可以构建丰富多样的用户界面,以满足不同的需求和提供良好的用户体验。

Widget通常具有以下特点:

  • 可视化:Widget以图形的形式在用户界面中显示,并提供了一个可视化的方式来呈现信息或控制功能。
  • 交互性:Widget允许用户与其进行交互,例如点击按钮、拖动滑块、选择下拉菜单等,从而触发特定的操作或更改应用程序的状态。
  • 可配置性:Widget通常具有一些可配置的属性,如大小、颜色、字体等,使开发人员能够根据需求自定义其外观和行为。
  • 可重用性:Widget可以在不同的应用程序或不同的部分中重复使用,以提高代码的复用性和可维护性。

常见的Widget库和框架如HTML/CSS中的Web Widget,Android中的Android Widget,以及各种GUI工具包(如Qt、GTK、WPF等)中提供的各种控件都是用于构建和管理Widget的工具。

标签:Qt6,Widget,Qt,Python,GUI,应用程序,PySide6,图形用户界面
From: https://www.cnblogs.com/testing-/p/17899767.html

相关文章

  • python 将 .pdf 文件转为 .md
    方法一:工具网站https://pdf2md.morethan.io/方法二:代码手动转换pipinstallaspose-wordsdoc=aw.Document(r"pdf文件路径\xxx.pdf")doc.save("Output.md")来源:https://products.aspose.com/words/zh/python-net/conversion/—————————————......
  • python之tkinter的grid布局
    grid将界面划分为二维网格,由行和列分割,从上到下,左到右编号,最左上角是(0,0),依次类推。也可结合frame使用,形成更加复杂的界面。语法:grid(argus……)参数:参数属性举例或备注                             row定位组件在第几行 column定位组件在第几列......
  • 使用java调用Python脚本
    通过使用java中的ProcessBuilder类,可以实现在java代码中调用外部的python代码的功能,以下为具体代码:importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassJavaCallPython{publicstaticvoidmain(String[]args)......
  • Python Numpy 数据可视化
    ​ 1、安装MatplotlibMatplotlib是一个功能强大且受欢迎的Python库,用于生成2D图表和图形。它因其灵活性、广泛的功能和用户友好的界面而广泛用于各种科学、工程和数据分析应用。可以通过pip安装,命令如下,pipinstallmatplotlib或python3-mpipinstallmatplotl......
  • python 的 多个异步库如何兼容
    概述异步编程的重要性和不同的异步库介绍异步编程是现代软件开发中的重要概念,特别是在处理IO密集型任务时,它的作用尤为明显。不同的异步库为Python提供了多种不同的方式来实现异步编程。这些异步库包括但不限于asyncio、tornado、gevent等等。在本文中,我们将介绍这些不同的异步库及......
  • python学习笔记1(你好,python)
    虽然一直不会python,但也了解一些python的场景,比如爬取数据、数据挖掘、ai,今天开始从B站上系统学习一下今日学习笔记:1、python优点:易于读写和学习,英文描述方式专注于解决问题,代码少、有生产力易调试,解释型语言,只显示第一个错误开源免费,标准库很强大,社区也很强大2、缺点:内存占用率高,......
  • Python 潮流周刊第一季完结(1~30)
    你好,我是猫哥。庆祝Python潮流周刊在几天前顺利更新到了第30期!我觉得这是一个很有意义的时间节点,不太短也不漫长,很适合作一个小小的总结。我打算今后每30期作为一季,都给大家做一些总结和分享。首先,给大家公开一些数据吧。本季时间从2023.05.13到2023.12.09,共210天......
  • Python——第五章:Zipfile模块
    Zipfile模块zipfile模块是Python中用于处理ZIP文件的标准库模块。它提供了创建、读取和写入ZIP文件的功能。zipfile模块在写入文件时,如果要将文件写入子目录,需要在写入文件前先创建好相应的目录结构。创建压缩包在使用zipfile.ZipFile写入模式(mode="w")时,如果指......
  • Python从入门到实践project飞船射击外星人2
    project飞船射击外星人1加入play按钮创建button文件importpygame.font#能在游戏里添加文本classButton:def__init__(self,ai_game,msg):"""初始化按钮的属性"""self.screen=ai_game.screenself.screen_rect=self.screen.get_rect......
  • 人工智能 | Python:易学、强大、多用途的编程语言
    Python发展历史Python是一门高级编程语言,由GuidovanRossum(龟叔)在1989年发明,设计Python语言的初衷是为了创造一种介于C和shell之间,简洁方便,易学易用,功能全面,可拓展的语言。龟叔在1989年圣诞节期间,以由荷兰的数学和计算机研究所开发的ABC语言为蓝本,开始开发一门新......