欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PySide从实战开始学习系列(一)认识PySide

程序员文章站 2022-06-11 11:19:53
...

刚转战新公司,开始边学边用PySide,然后发现网上教程真的烂到一塌糊涂,虽然我也写不出什么精品教程,但我会把我学习过程中遇到的问题分享出来,方便自己和大家。


开始正题

看教程是最枯燥的,尤其是像我现在没有时间专门学习新技术的人,所以我会利用实战小项目来填充自己的技术栈。

第一个小项目,写一个简单的类文件夹,上效果图

PySide从实战开始学习系列(一)认识PySide


看上去很简单,我们来一点一点实现。


首先,我们认识一下PySide,摘抄自其它博友的博客文章。

PySide是由诺基亚公司开发的,简单来说就是其Qt库的Python移植(原先是C++的)。诺基亚还有跨平台的开发工具Qt,完全都是免费使用,在这里不得不赞一下诺基亚。PySide的主要对手是PyQt。PyQt出现得比PySide早,但是PySide血统更纯正一些(毕竟是亲儿子)。但是具体应用两者差不多,因为目前Qt的IDE也没有把Python弄进去,要实现同样功能两者要进行的操作大同小异。PyQt个人应用免费,但是商业应用要收钱,相比下PySide的个人和商业双免费的策略更让人放心一些。

再说一下环境

Python2.7 + PySide,windows下运行,没试过Linux和Unix,有需要可以自行尝试。


有了运行的平台,我们来运行第一个窗口

# -*-coding:utf8 -*-
__author__ = "jermeyjone"
__abc__ = "第一个PySide程序,创建一个窗口"

import sys
from PySide.QtCore import *
from PySide.QtGui import *

class Form(QWidget):
    def __init__(self):
        # python2的super语法,传参不能省略
        # 初始化构造用户界面类的基础类,QWidget提供了默认的构造方法
        super(Form, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("Test1")   # 设置窗口名
        self.resize(220, 200)   # 设置窗口大小
        self.move(500, 200)   # 设置窗口位置

        # show()方法在屏幕上显示一个widget,widget对象在这里第一次被在内存中创建,并且之后在屏幕上显示。
        self.show()


if __name__ == "__main__":
    # 所有应用必须创建一个应用(Application)对象
    # sys.argv参数是一个来自命令行的参数列表
    app = QApplication(sys.argv)

    test1 = Form()
    
    # 应用进入主循环,事件处理开始执行。
    # 主循环用于接收来自窗口触发的事件,并且转发她们到widget应用上处理。
    # 如果调用exit()方法或主widget组件被销毁,主循环将退出。
    # sys.exit()方法确保一个不留垃圾的退出。系统环境将会被通知应用是怎么被结束的。
    sys.exit(app.exec_())

运行效果如下:

PySide从实战开始学习系列(一)认识PySide

其实原理和其它图形代码都差不多,还算简单。


如何显示文字呢?

    def initUI(self):
        # 创建一个QLabel对象
        label = QLabel("Label", self)
        label.resize(100, 100)
        label.move(100, 100)
        # 设置label的显示文字
        label.setText("Hello PySide")
        self.resize(300, 300)
        self.move(500, 300)
        self.show()

效果如下:

PySide从实战开始学习系列(一)认识PySide


再上一个按钮的效果:

# -*- coding:utf-8 -*-
__author__ = "jermeyjone"

import sys
from PySide.QtGui import QWidget, QApplication, QPushButton, QMainWindow


class Test(QWidget):
    def initUI(self, MainWindow):
        MainWindow.setWindowTitle("my window")
        MainWindow.resize(400, 400)
        self.btn = QPushButton("&Click me", MainWindow)   # 创建一个按钮
        self.btn.setStyleSheet("background-color: #999")   # 定义按钮样式,PySide支持CSS
        MainWindow.show()


def aaa():
    print "hello"


class MainWindow(QMainWindow, Test):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.initUI(self)   # 初始化父类的方法
        self.btn.clicked.connect(aaa)   # 按钮的信号,让其执行aaa函数


if __name__ == "__main__":
    app = QApplication(sys.argv)
    t = MainWindow()
    sys.exit(app.exec_())

这段效果相信就很简单了,只是点击之后执行aaa函数,可能有点乱,这个要学习信号和槽了。

点一下按钮,控制台就打印一行hello

PySide从实战开始学习系列(一)认识PySide


其它控件就不一一看了,想具体了解,除了网上搜索,有一个官方文档,可以看一下,很好用。

http://srinikom.github.io/pyside-docs/

这里面清楚标明所有函数的参数、用法及返回值,对于我这种看源码一堆钩子方法,看的脑袋疼的人来说,无疑是巨大的福音。


PySide中的控件叫widget,PS的widget实在太多了,不过真的不用去刻意牢记所有,PySide给我们提供了一个很好用的可视化界面工具,叫Qt Designer,在python目录下的

Python27\Lib\site-packages\PySide

如果你正确安装了PySide包,那么他一定在里面安静的等待你去点击它~

这个就不演示了,像用VB一样简单~


使用这个的教程网上一大堆,自行查找,我只是要说,保存后生成ui文件,通过命令

pyside-uic .\文件名.ui -o .\要生成的文件名.py

将ui文件变成py文件,我们就可以直接使用。

另外,我们的PySide也可以直接使用ui文件(这个后面再说)


第一篇就写到这里。


相关标签: PySide