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

版权声明: https://blog.csdn.net/jeremyjone/article/details/81011563

刚转战新公司,开始边学边用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_())

运行效果如下:


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


如何显示文字呢?

    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()

效果如下:



再上一个按钮的效果:

# -*- 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



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

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文件(这个后面再说)


第一篇就写到这里。


猜你喜欢

转载自blog.csdn.net/jeremyjone/article/details/81011563