pyqt样式表语法笔记(中)--原创

简介: pyqt样式表语法笔记(中)pyqtQSSpython样式表一、弹窗在日常的各种桌面软件的使用中,我们都会碰到弹窗。例如注册,登录的时候,会有相应的信息弹窗,这里就以信息收集弹窗为例进行弹窗的说明。

pyqt样式表语法笔记(中)

pyqt
QSS
python
样式表

一、弹窗

在日常的各种桌面软件的使用中,我们都会碰到弹窗。例如注册,登录的时候,会有相应的信息弹窗,这里就以信息收集弹窗为例进行弹窗的说明。

常见的弹窗的信息种类有文本类、数值类和下拉框选项这几种。主要是通过调用QInputDialog这个类的各种方法实现的。下面分别介绍。


  • 1.文本类
    QInputDialog.getText(self,'弹窗标题','弹窗提示信息','控件类型','控件里的提示信息')
    ('控件类型'一般为QLineEdit.Normal)
    具体详见下面的示例。
        python    6行
  1. @pyqtSignature("") 
  2. def on_input_clicked(self): 
  3. (my_str,status) = QInputDialog.getText(self, '请在此输入信息', '请输入您的姓名', QLineEdit.Normal, '姓名'
  4. print(my_str) 
  5. print(status) 

代码解释:
QInputDialog.getText这一方法会返回一个tuple,第一个元素是用户输入的信息,第二个是返回状态,当用户选择'ok',则返回True,若选择'Cancel',则返回false.

文本类弹窗

效果展示


my_str用于接收用户输入的信息,status则表示返回的布尔值


  • 2.数值类
    数值类分为整型(int)和浮点型(double)
    整型:QInputDialog.getInteger(self,'弹窗标题','弹窗提示信息','默认值','最小值','最大值')
    浮点型: QInputDialog.getDouble(self,'弹窗标题','弹窗提示信息','默认值','最小值','最大值')

QInputDialog.getInteger


解释:
第"1"处,用户可以用键盘上下键进行数值的变动,当然亦可用鼠标
第"2"处,当用户输入比所设定的值大的数时是不会有反应的。也就是说,假如我们设定的最大值是99,当我输入10,再想输入0的时候是不会有反应的。懂?


  • 3.下拉框选项
        python    9行
  1. @pyqtSignature("") 
  2. def on_list1_clicked(self): 
  3. my_list = QStringList() #这段我不能正常执行,但是视频教程里是这么写的,而且能运行 
  4. my_list.append("apple"
  5. my_list.append('banana'
  6. my_list.append('pear'
  7. my_str, status = QInputDialog.getItem(self, '下拉框', '选择你喜欢的水果', my_list) 
  8. print(my_str,status) 

看教程的时候完美运行,一到自己就出问题,反正就是说QStringList这个东西有问题,百度和谷歌了半天也没找到解决办法,后来直接用list就可以了。。。醉了。

        python    5行
  1. @pyqtSignature("") 
  2. def on_list1_clicked(self): 
  3. my_list = [] 
  4. ... 

下拉框效果图

二、显示图片

  • 1.显示静态图片
    要显示图片,首先需要将图片导入进来,建议是将图片放到你当前文件所在目录。
    a.导入图片到资源管理器

导入图片1

导入图片2


第一步新建.qrc文件,保存在当前目录下。
第二步为前缀取名(无限制)
第三步导入图片或其他文件

b.拖拽图片窗口 Graphics View

Graphics View

c.修改样式表

修改样式表


如果只是为了显示图片建议选择"border-image",因为它会自适应窗口。

  • 2.给图片添加事件

难道静态图片就能满足我们的要求吗?为什么不可以通过点击图片实现跳转到网站或其他的功能呢?下面就来做这件事。

首先通过上面一个步骤,我们的目录中已经有一个后缀为**.qrc**的文件,我们需要将它转化为.py文件。

a.用命令行进行转化

        python    4行
  1. # 将qrc文件转化为.py文件 
  2. # 命令行需要进入到当前目录下 
  3. pyrcc4 my_pic.qrc > test_rc.py 

之后我们得到了一个test_rc.py文件,不知道为什么,我执行的时候报错了,错误如下

        python    7行
  1. Traceback (most recent call last): 
  2. File "C:\Users\14356\Desktop\test_pyqt\test_rc.py", line 6521, in <module> 
  3. qInitResources() 
  4. File "C:\Users\14356\Desktop\test_pyqt\test_rc.py", line 6516, in qInitResources 
  5. QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) 
  6. TypeError: qRegisterResourceData(int, str, str, str): argument 2 has unexpected type 'str' 

估计有事编码的问题,omg!
三个参数通过命令行后生成的是str类型,但是函数调用有要求byte类型,这不扯蛋吗?!没办好只好将三个参数转化成bytes类型。不过没关系,bug来了就去解决吧~~在test_rc.py中添加如下代码

        python    4行
  1. qt_resource_struct = qt_resource_struct.encode('utf-8'
  2. qt_resource_name = qt_resource_name.encode('utf-8'
  3. qt_resource_data = qt_resource_data.encode('utf-8'

b. 修改槽函数代码
需要在我们自己定义的类下初始化图片控件的鼠标点击事件,并触发我们自己定义的my_picEvent函数。
新增代码如下

图片鼠标事件


介绍一下webbrowser这个类,我们需要使用 import webbrowser 来引入这个类,然后当我们点击图片就会通过默认浏览器打开网站了。牛逼!

0

目录
相关文章
|
API C++ 开发者
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
1395 20
|
Python
Python实用记录(十六):PyQt/PySide6联动VSCode便捷操作指南
本文提供了一份详细的PySide6与VSCode联动的操作指南,包括安装配置VSCode、安装必要的扩展、配置扩展以及编辑和运行PySide6项目。文中还提到了相关工具如uic.exe、rcc.exe和designer.exe的用途,并提供了进一步学习的资源。
2799 1
Python实用记录(十六):PyQt/PySide6联动VSCode便捷操作指南
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
1279 7
|
前端开发 Python
使用Python+openpyxl实现导出自定义样式的Excel文件
本文介绍了如何使用Python的openpyxl库导出具有自定义样式的Excel文件,包括设置字体、对齐方式、行列宽高、边框和填充等样式,并提供了完整的示例代码和运行效果截图。
1011 1
使用Python+openpyxl实现导出自定义样式的Excel文件
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
2225 1
|
数据可视化 Linux API
Tkinter与PyQt的对比
【8月更文挑战第3天】本文对比了Python中两大GUI工具包Tkinter与PyQt。Tkinter作为Python标准库的一部分,易于学习且轻量级,适合快速开发简单的跨平台GUI应用。PyQt功能强大且灵活,支持复杂应用的开发,更适合有经验的开发者。通过示例代码展示了如何使用这两种工具包创建基本的GUI应用及图像查看器,帮助读者理解它们的不同之处。选择哪个工具包取决于项目的具体需求、开发者的经验以及对功能和性能的要求。
|
XML JSON Ubuntu
Python实用记录(十五):PyQt/PySide6打包成exe,精简版(nuitka/pyinstaller/auto-py-to-exe)
本文介绍了使用Nuitka、PyInstaller和auto-py-to-exe三种工具将Python的PyQt/PySide6应用打包成exe文件的方法。提供了详细的安装步骤、打包命令和参数说明,适合新手学习和实践。
7866 0
|
Python
PyQt---------信号与槽函数的关系
PyQt---------信号与槽函数的关系
596 1

推荐镜像

更多