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



  • 0_1524119219399_111.jpg

    接下来处理qt界面的逻辑

    qt控制爬虫逻辑

    # 每20分钟爬新图片
            
    self.timerThread = QtCore.QTimer()
            
    self.timerThread.setInterval(1000 * 60 * 20)
            
    self.timerThread.timeout.connect(self._thread.start)
            
    self.timerThread.start()
    

    爬虫会下载图片,造成gui画面卡顿,所以我放在线程中进行,线程里就直接调爬虫命令

    class MyThread(QtCore.QThread):
    
        def __init__(self, parent=None):
            super(MyThread, self).__init__(parent)
    
        def run(self):
            handleTimer()
    

    爬虫下载的图片,需要在qt中显示,我用QFileSystemWatcher监视文件夹,别问我为啥不在下载后通知qt,跨线程通信伤不起

    self._watcher = QtCore.QFileSystemWatcher()
    
    if not os.path.exists('cache'):
        os.makedirs('cache')
    self._watcher.addPath(os.path.join(currentPath, 'cache'))
    self._watcher.directoryChanged.connect(self.handleWatcher)
    
    #监视文件夹更新
        def handleWatcher(self, path):
            for (dirpath, dirnames, filenames) in os.walk(qstring_to_str(path)):
                for file in filenames:
                    p = (os.path.join(currentPath, 'cache', file))
                    self.addImg(p)
    
    
    

    如果有新图片,添加到数组中

        def addImg(self, name):
            # print('ad==',name)
            if not name in self._names:
                self._names.append(name)
    

    每10s轮换一张图片,也是用定时器实现

    self._timer = QtCore.QTimer()
    self._timer.setInterval(1000 * 10)
    self._timer.timeout.connect(self.playImg)
    self._timer.start()
    

    时间一到,就把图片塞给label,这样界面就有图片了,关于QPixmap,吐槽一下,在win10测的好好的,一到win7就不好用,各种路径都试了,只好放弃win7

    #定义槽
        @QtCore.pyqtSlot('PyQt_PyObject')
        def playImg(self):
    
            if self._currentIndex < len(self._names):
                path = self._names[self._currentIndex]
                pix = QtGui.QPixmap(path)
    
                self.ui.label.setPixmap(pix)
                self._currentIndex += 1
    

    程序开发差不多了,接下来,打包成exe

    未完待续



  • @青山白云 是不是PyQt 4对QPixmap的支持不如Qt4对QPixmap1的支持呢?还有一个可能是不是QPixmap在多线程的环境中使用会出现一些小问题呢?🐸



  • @jiangcaiyang 现在只发现win10好用,win7不好用,其他没有对比


  • 网站研运

    @青山白云 嗯,我想桌面的操作系统,大概只有Windows 10不会变了吧,这个操作系统大概会支持数十年之久呢。


Log in to reply
 

走马观花

最近的回复

  • G

    北京名律免费法律咨询,解决您的法律困扰,如果您眼下没有遇到法律上的问题,也可以留一位大律师的联系方式以备不时之需!ccfd91efc3a6b2ed0e79054d2248eed.jpg bf6015b383483f1fe83cdcfd130fc6b.jpg 2f347879129add1096bf3424edbe517.jpg

    read more
  • G

    北京名律免费法律咨询,解决您的法律困扰,如果您眼下没有遇到法律上的问题,也可以留一位大律师的联系方式以备不时之需!微信图片_20200210141336.png 微信图片_20200210141333.png 微信图片_20200210141329.png

    read more
  • G

    北京名律免费法律咨询,解决您的法律困扰,如果您眼下没有遇到法律上的问题,也可以留一位大律师的联系方式以备不时之需!

    read more

关注我们

微博
QQ群