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_())
运行效果如下:
其实原理和其它图形代码都差不多,还算简单。
如何显示文字呢?
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文件(这个后面再说)
第一篇就写到这里。
上一篇: 简单的CAS单点登录
下一篇: 图的深度优先搜索