Python3結合Sciter編寫桌面程式第三節

2021-09-16 12:38:16 字數 4091 閱讀 4942

繼續...基礎框架搭好了,下面來正式的來乙個專案吧

behance

全球設計師的作品展示平台

就從這拉幾張圖吧,具體的網頁解析方式網上有很多,在此略過,我已經取出了一些位址,儲存在了list.txt裡,這次就用這些吧。

asyncio

框架則用了aiohttp

問題這裡可以在程式啟動的時候設定乙個配置列表cfg

from os import path as ospath, getcwd, mkdir

...def __init__(self):

...self.cfg = self.initcfg()

def initcfg(self):

cfg = {}

# **,沒有可不用設定

# cfg['proxies'] = '127.0.0.1:61274'

# 載入列表

filename = "list.txt"

if ospath.exists(filename):

with open(filename, "r") as f:

cfg['piclist'] = f.read().strip().split("\n")

# 設定的儲存位置

current_folder = getcwd()

cfg['pic_temp'] = ospath.join( current_folder, 'pic_temp')

if not ospath.isdir( cfg['pic_temp'] ):

mkdir(cfg['pic_temp'])

return cfg

然後傳遞給服務程序就可以了

p = process(target = startservicep, args = ( self.guiqueue, self.servicequeue, self.cfg ))
先來修改一下html的內容,新增乙個自定義控制項,用來存放:

在服務程序serviceevent裡新增乙個方法getpicbylist()

def getpicbylist(self, msg):

# 為建立佔位圖

# 先建立5個佔位圖

html = ''

imgidlist =

time_now = ''

for i in range(0, 5):

time_now = '-'.join( ( str(i), str(time()) ) )

# 儲存的id

html += self.html % ( time_now )

self.__putgui('creatplaceholderimg', html)

return imgidlist

之後就到了動態建立協程的部分了

def __run_coroutine_threadsafe(self, data, _guirecvmsgdict):

asyncio.run_coroutine_threadsafe(self.dld.stream_download(

data,

_guirecvmsgdict

), self.new_loop)

但在正式介紹run_coroutine_threadsafe()之前,我們需要先開啟乙個協程迴圈

但我們已經開啟了乙個用於處理佇列的迴圈了,沒辦法再開乙個(也不排除是咱太菜),於是另開了乙個執行緒專來處理協程

class serviceevent(object):

'''服務程序'''

def __init__(self, _guiqueue, cfg):

...# 主線程中建立乙個事件迴圈

# 啟動乙個執行緒,傳遞主線程中建立的事件迴圈

t = thread(target=self.start_loop, args=(self.loop,))

t.setdaemon(true) # 設定子執行緒為守護執行緒

t.start()

def start_loop(self, loop):

# 啟動事件迴圈

# 儲存到本地

if not ospath.isfile(d['fpath']):

with open(d['fpath'], 'ab') as file:

while true:

chunk = await response.content.read(1024)

if not chunk:

break

file.write(chunk)

self.guirecvmsg.put(_guirecvmsgdict)

except asyncio.timeouterror:

pass

最後,主程序獲得的id及路徑,顯示到視窗中

function setimgbg( d )"]);

if(div)

}

原始碼

總結:完成這個專案使用了

相對乙個單純的爬蟲指令碼來說,還是有點複雜的,尤其是互動,難怪這麼多人不願意寫介面...

雖然還有不足,但本次專案的內容就到這了。

謝謝。

Python3結合Dlib實現人臉識別和剪下

利用python開發,借助dlib庫進行人臉識別,然後將檢測到的人臉剪下下來,依次排序顯示在新的影象上 實現的效果如下圖所示,將圖1原圖中的6張人臉檢測出來,然後剪下下來,在影象視窗中依次輸出顯示人臉 實現比較簡單,量也比較少,適合入門或者興趣學習。圖1 原圖和處理後得到的影象視窗 python 3...

python3 切片 python3 切片

取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下 l michael sarah tracy bob jack 取前3個元素,應該怎麼做?笨辦法 l 0 l 1 l 2 michael sarah tracy 之所以是笨辦法是因為擴充套件一下,取前n個元素就沒轍了。取前n...

python3安裝 Python3的安裝

1.anaconda安裝 2.安裝包安裝 3.linux下的命令列安裝 centos red hat 1 sudo yum install y sudo yum update3 sudo yum install y python35u python35u libs python35u devel p...