从零开始开发python和qt项目(一)



  • 前言:python作为很火的程序语言,用来做爬虫实在是太方便了,结合qt界面,简直就是大杀器,
    多的不说,让我们开始吧。

    思路:本次主要是用python开发,qt作为界面导入到python中,
    项目内容是python爬取某壁纸网站图片,显示在qt上

    1.首先安装Python, Qt(时间紧,没提供链接,请自行百度)
    下载安装***python-2.7.13.amd64.msi***
    PyQt4-4.11.3-gpl-Py2.7-Qt4.8.6-x64.exe

    2.下载安装***pyCharm***(Python的IDE)

    3.用pyCharm编写python代码,工程结构如下

    0_1524057548337_TIM截图20180418211842.png

    4.Spider2.py是我们的主要文件,

    0_1524057710573_TIM截图20180418212129.png

    看这段代码是不是很熟悉,这里我们创建了一个qt窗口,Widget是我们自己的窗口类

    0_1524057926956_22.png

    它继承QWidget,并在构造里面指定ui文件
    那么,QtGui.QWidget怎么会出现在python里呢,那是因为我们在文件里导入了pyqt4

    from PyQt4 import QtGui, QtCore
    

    那Ui_Form是怎么生成的呢,
    如果你安装了pyqt4,那么在【C:\Python27\Lib\site-packages\PyQt4】会有一个designer.exe,启动后就是qt设计师界面

    0_1524058346972_223.png

    拖进去一个label,保存后,会有一个ui_widget.ui文件,Qt通过QtUiTools模块来读取UI文件,而pyqt无法直读UI文件,需要通过pyuic4指令进行转换

    pyuic4 -o ui_widget.py ui_widget.ui
    

    转换后得到ui_widget.py ,哇,忽然有一种勇者大冒险的感觉,慢慢探险,慢慢发掘

    我们可以稍微看一下ui_widget.py 文件

    0_1524058874539_224.png

    原来Ui_Form是这个类的名字

    在Spider2.py里导入ui_widget.py ,这样我们的界面就出来了

    from ui_widget import *
    

    未完待续



  • @青山白云 我想了解一下,现在早已经出了PyQt5了,看到你使用的还是PyQt4。这两者有什么关联么?另外一个问题是我看到社交网络上高手们都说Python + Scrapy2做爬虫挺好的,我也没有尝试,但是要是以后有爬虫爬的需求我会考虑Scrapy2的。



  • @jiangcaiyang 我没有用pyqt5,但是估计跟pyqt4原理一样,Scrapy2只是借用了Scrapy框架,爬虫的顺序和逻辑跟你直接写是一样的,小项目直接写比较快,大项目用Scrapy框架合适


 

走马观花

最近的回复

  • @bladesero Blender 在角色建模和渲染这些方面的确比较强。😄

    我们的软件还在发展中呢。
    18da2116-2055-47c1-8317-1ccde17dfcc0-image.png

    阅读更多
  • untitled.jpg figure角色(WIP2).jpg
    TIM截图20190117184210.png
    使用的软件是blender,zbrush和substance painter

    阅读更多
  • 背景:如果需要qml显示循环list,一般是用3个ListView循环交替,实现伪循环,期间逻辑复杂,容易出错,PathView本身自带循环,所以考虑用PathView实现循环

    设计:PathView显示5条数据,按照垂直List一个个排好顺序,由于收尾移动时候会空白穿帮,所以用clip控制显示中间三条数据

    滚动控制:currentIndex,decrementCurrentIndex(),incrementCurrentIndex()

    代码:

    Item{ id: item1 property int myIndex: 0 property int onePageCount: 3 property real oneHeight: 72 property real oneWidth: 580 property int isCurrentListView: 1 //0,1,2 property bool isAdd: true //direction,down=true,up=false property int hightlightIndex: 0 property int currentIndexPathView: 0 //use this Item{ id: itemClip width: item1.oneWidth height: item1.oneHeight*3 clip: true PathView { id: listView1 width: item1.oneWidth model: listModelSpeedWarning delegate: delegeteLine pathItemCount: item1.onePageCount+2 interactive: false path: Path { startX: item1.oneWidth/2 startY: -item1.oneHeight/2 PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*0+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*0+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*1+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*1+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*2+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*2+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*3+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*3+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*4+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*4+item1.oneHeight/2 } } Component.onCompleted: { listView1.currentIndex = -1 } } } }

    问题:windows下测试,按住按键不松手,list滚动会卡住,松手后恢复正常,看来list不能滚动太快

    阅读更多
  • H

    @青山白云 只是为了替换GIF,不过目前已经解决加载问题

    阅读更多

关注我们

微博
QQ群











召唤伊斯特瓦尔