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

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

PyQt5版本5.9.2是一个Python绑定库,用于创建使用Qt框架的图形用户界面(GUI)应用程序。PyQt5-tools是一个附带的工具集,用于在开发PyQt5应用程序时提供帮助和增强功能。 PyQt5 5.9.2是一个稳定的版本,可以提供可靠的功能和性能。它是PyQt5的最新版本之一,具有许多改进和错误修复。PyQt5可以与Python 3.x版本一起使用,并提供了丰富的类库,以便于开发者创建用户友好的图形界面应用程序。 PyQt5-tools是一个附带的工具集,可以帮助开发者更高效地创建和调试PyQt5应用程序。它包含一些实用程序和辅助工具,如Qt设计师(Qt Designer)、Qt助手(Qt Assistant)等。Qt设计师是一种图形化界面设计器工具,用于快速创建和编辑Qt应用程序的用户界面。Qt助手是一个帮助文档浏览器,提供了对Qt框架文档的良好支持。 通过将PyQt5PyQt5-tools结合使用,开发者可以更轻松地开发PyQt5应用程序。PyQt5-tools提供了一些方便的工具和功能,使开发过程更加高效和简便。尤其是Qt设计师的使用,可以减少手写代码的工作量,加快界面构建的速度。 总结而言,PyQt5 5.9.2是一个稳定版本的PyQt5库,用于创建GUI应用程序,而PyQt5-tools是一个附带的工具集,为PyQt5开发提供了一些实用工具和辅助功能,如Qt设计师和Qt助手。两者结合使用可以提高PyQt5应用程序的开发效率和质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值