国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用wxpython實現的一個簡單圖片瀏覽器實例

2020-02-23 05:33:36
字體:
來源:轉載
供稿:網友

上次我爬了n多圖片,但是瀏覽的時候有一個問題。

圖片瀏覽器的瀏覽一般都是按名稱排的,而我對圖片的命名是按照數字遞增的。比如3總是會排在10后面,也就無法快速地瀏覽圖片了。

所以,出于方便自己查閱圖片,也出于學習,決定做一個自己的圖片瀏覽器。

目標:瀏覽目錄,通過滾輪不斷顯示同一個文件夾下的圖片,并自定義排序。

步驟0:要實現圖形界面,我使用wxPython。

至于如何安裝和簡單地使用wxpython,可以到網上檢索,一大堆資料。
以下步驟默認你已經知道如何生成一個自己的frame。

步驟1:瀏覽目錄。

這個功能就是類似于打開“我的電腦”,然后不斷地進入文件夾和返回。
通過幾種嘗試,我決定使用listbox。

我初始化一個app。用一個frame實現目錄的功能,其上只有一個listbox;用另一個frame實現圖片展示的功能,兩個frame通過app進行信息的傳遞。

代碼如下:
for _dir in os.listdir(dir):
    #do something

其中像os.path.split()、os.path.splitext()、os.path.isdir()等,都是很常用的一些方法。

顯示目錄就是一個不斷地獲取你選擇的目錄,進入目錄,讀取其下目錄,清空listbox,顯示目錄,更改工作路徑的過程。

顯示目錄的時候,自定義排序功能就來了。通過對圖片名稱進行處理,轉為數字,排序,然后再重新組裝回去,從而達到按數字遞增的效果。

代碼如下:
self.list.Bind(wx.EVT_LISTBOX_DCLICK, self.OnDClick)

同時通過以上方法為listbox綁定了雙擊事件。若是雙擊目錄則進入目錄,否則顯示通過app展示圖片。

同時這個frame需要具備兩個方法,就是獲取上一張或下一張圖片,為了后續app的調用。

步驟2:顯示圖片

這個圖片展示一開始感覺挺麻煩的,但是弄懂了之后就很簡單了。

我用一個frame展示圖片。

frame上面空白,有一個wx.StaticBitmap,之后顯示圖片的時候只需要往這個staticbitmap寫bitmap就可以了。一開始我是不斷地新建staticbitmap,導致了一些可以看到但是那時候不知道為什么的原因。

然后在這個frame上檢測鼠標滾輪事件,通過向上或向下滾輪調用app的GetNextImage和GetPreImage方法并將獲得的圖片顯示出來。

還有圖片的大小,我先規定了一個最大值和最小值,將圖片約束在一定的范圍內。
代碼如下:
bmp = image.Scale(size[0], size[1]).ConvertToBitmap()
self.bmp.SetSize(size)#bmp是staticbitmap
self.bmp.SetBitmap(bmp)

但是一個小窗口看圖片很不爽,于是將圖片窗口全屏化。

代碼如下:
self.ShowFullScreen(True, style=wx.FULLSCREEN_ALL)

全屏化就要考慮怎么退出了。我通過按鍵發送消息,命令窗口關閉或顯示。若顯示則關閉(其實只是隱藏),若隱藏則顯示。注意這個事件要綁定到app上面。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石楼县| 威信县| 科尔| 通州市| 凤山市| 宁乡县| 神池县| 博爱县| 宣武区| 万盛区| 五指山市| 镇沅| 乃东县| 丰宁| 南投市| 大方县| 钟祥市| 建阳市| 明溪县| 称多县| 曲周县| 泸西县| 吉首市| 泾川县| 阜宁县| 田阳县| 平湖市| 侯马市| 富阳市| 岱山县| 寿宁县| 舒兰市| 庆城县| 伊宁县| 新蔡县| 会理县| 内江市| 温宿县| 七台河市| 土默特左旗| 睢宁县|