導航:首頁 > 編程語言 > pythongui實例教程

pythongui實例教程

發布時間:2023-11-05 00:41:58

1. python入門系列(十二)——GUI+多進程

話說,python做圖形界面並不明智,效率並不高。但在某些特殊需求下還是需要我們去使用,所以python擁有多個第三方庫用以實現GUI,本章我們使用python基本模塊tkinter進行學習,因為需求並不大,所以不做太多拓展。
繼續改寫上一章的IP查詢系統(= =,要玩爛了),首先略改下IpWhere.py以備調用~

然後使用tkinter模塊進行圖形界面的實現,調用預編譯的IpWhere模塊 :

額,太丑了,但基本實現我們小小的需求,在以後的py學習中,我們再涉及其他的第三方模塊,此處就當是入門了解吧。

十分抱歉把這么重要的內容放在最後,要不是大佬指點,此次學習可能就要錯過多進程的問題了。
Unix系統提供了forx,python可藉助os模塊調用,從而實現多進程,然而windows系統並不具備,所以我們選擇python內置的multiprocessing多進程模塊進行學習。

首先我們藉助直接調用多進程來改寫下我們在多線程章節用到的例子!

顯然,這么寫實在太蠢了,如果我們的任務量巨大,這並不合適。所以我們引入了進程池的概念,使用進程池進行改寫:

在此,我們可以看到所有進程是並發執行的,同樣,我們在多線程章節就講過,主進程的結束意味著程序退出,所以我們需要藉助join()方法堵塞進程。

我們知道線程共享內存空間,而進程的內存是獨立的,同一個進程的線程之間可以直接交流,也就帶來了線程同步的苦惱,這個我們在多線程章節已經講過了;而兩個進程想通信,則必須通過一個中間代理來實現,即我們接下來的內容:進程間通信。

進程之間肯定是需要通信的,操作系統提供了很多機制來實現進程間的通信。Python的multiprocessing模塊包裝了底層的機制,提供了Queue、Pipes等多種方式來交換數據。我們接下來就以Queue的方式進行學習。

Queue.Queue是進程內非阻塞隊列,multiprocess.Queue是跨進程通信隊列,前者是各自私有,後者是各子進程共有。

還有一個在後者基礎上進行封裝的multiprocess.Manager.Queue()方法,如果要使用Pool創建進程,就需要使用multiprocessing.Manager()中的Queue(),而不是multiprocessing.Queue(),否則會得到一條如下的錯誤信息: RuntimeError: Queue objects should only be shared between processes through inheritance.

接下來我們就藉助進程池來進行多進程操作的改寫,感謝大佬一路輔導。

我們可以看到兩個子線程先執行,然後一個子線程單獨執行,此處有意而為之,讓大家更清晰的了解隊列的使用。期間有一處我們放棄使用jion()方法堵塞,而是自己寫了個循環堵塞,大家根據自己習慣來就好。

話說,真的沒人吐槽么?上面的例子從需求上來講,完全就不需要多線程好不好!emmmm,我們來點實力拓展,寫一個有智商的多線程腳本,順便結合上一節的web來一個綜合篇,隨便找個現實需求吧!

emmm,比如我們來到當當網買書,搜一下我們想要的書籍,發現!!太多了!!真J2亂!!看不過來!!不想翻頁!!直接告訴我哪個便宜、哪個牛逼好不好!!

簡單看下這個url:
http://search.dangdang.com/?key=滲透測試&ddsale=1&page_index=2
其中ddsale參數代表當當自營,page_index代表頁數,key代表搜索內容,我們本次的變數只有頁數。

所以我們構造請求的url為:
'http://search.dangdang.com/?key=滲透測試&ddsale=1&page_index='+str(page)
如果修改的內容不使用str字元串轉化,會收到如下報錯:
TypeError: can only concatenate str (not "int") to str
然後我們看一下頁面內容的分布情況,本次我們關心賣什麼書,賣多少錢?

對應的編寫我們的正則匹配規則,當然了,有更簡便的第三方庫可以幫我們處理,但為了更好的形成流程性認識,我們這里依然使用正則。
我們對應我們需要的書籍名稱和當前價格匹配如下:
<a title=" (.*?)" ddclick=
<span class="search_now_price">¥(.*?)</span>
那麼,思路理清了,我們就開始使用多線程來寫我們的小系統~

然後我們去查看一下我們的結果文件~

現在這個小系統具備的功能就是根據用戶需要選擇要檢索的書籍,然後整理下名稱和價格,開了10個線程,如果小夥伴pc給力的話可以繼續加。簡單的異常處理機制和界面交互,基本滿足日常所需。

2. Python GUI項目實戰(二)主窗體的界面設計與實現

上一節我們介紹了登錄窗體的GUI設計與功能實現,用戶的賬號和密碼校驗完成後應當跳轉到主窗體內容,這一節我們將具體介紹主窗體界面的設計與功能實現!

我們新建一個900x640的窗口,頂部加入圖片,下面主體部分創建兩個Panedwindow容器,左邊添加按鈕,右邊作為TreeView顯示界面;

顯示效果:(注意:tkinter在Mac上Panedwindow不支持修改前景色背景色)

在右邊的Pannedwindow容器中,添加一個LabelFrame容器作為查詢區域,在LabelFrame容器中添加一系列的Label、Entry、Button控制項,可以輸入學號、姓名、電話、身份證、查詢、和顯示全部信息:

顯示效果:

創建控制項、設置對齊方式和每個列的標題

顯示效果:

登錄成功後,在頂部顯示用戶姓名和登錄時間,用戶姓名是怎麼來的?是我們在登錄窗口輸入的,所以這就涉及到了跨窗體數據的傳遞。這一點非常重要!
登錄窗體(登錄信息)==>主窗體
傳遞的基本方式:構造函數
在主窗體的構造函數中添加一個接收參數 current_user ,在登錄窗體載入新窗體時將參數傳遞進去;
但是我們登錄窗體的登錄函數 login() 中用戶名的變數 user 是局部變數,函數調用完了之後就變數就沒有了,那怎麼調用呢?
我們需要在登錄窗體的構造函數中定義全局變數:

為了獲取用戶登錄的時間,我們定義一個獲取當前時間的方法:

然後在載入主窗體時將參數 self.user 和 self.get_now_time() 作為參數傳遞進去

另一邊,我們在主窗體中,在構造函數中添加全局變數

之後,我們在Top_banner中通過標簽將user信息展示出來:

這樣主窗口就會顯示通過登錄窗口登錄的用戶名(首字母自動轉大寫)和登錄時間:
效果演示:

然後我們在構造方法中把這個函數寫入,以實現自動把學生信息寫入到all_student_list中

文件中讀取到的學生信息存儲到all_student_list列表,以此作為參數傳入載入TreeView的方法中;

在構造方法中調用該方法,自動把所有學生信息載入到TreeView中

運行效果:

這一節我們實現了主窗體的搭建,從界面的布局到TreeView載入全部學生信息。學生數據如此之多,如果我們想精確查看具體某個學生的信息該怎麼做呢?下一講,我們將實現學生信息的查詢功能,敬請期待吧~

3. Python如何進行GUI桌面開發有哪些不錯的庫可以推薦

Python進行GUI開發的庫其實很多,下面我簡單介紹幾個不錯橋和的庫,感興趣的朋友可以自己嘗試一下,實驗環境win10+python3.6+pycharm5.0,主要內容如下:

tkinter

這個就不用多說了,python自帶的GUI開發標准庫,對於開發小型簡單的應用來說,完全可以了,開源、跨平台,使用起來非常方便,下面我簡單測試一下,主要代碼如下:

點擊運行程序,效果如下,一個窗口一個Label標簽:

easygui

這個是基於tkinter的一個窗口GUI庫,可以快速創建窗口對話框,包括常見的登陸對話框、注冊對話框等,下面我簡單介紹一下這個庫的安裝和使用:

1.首先,安裝easygui,這個直接在cmd窗口輸入安裝命令「pipinstalleasygui」就行,如下:

2.安裝完成後,我們就可以直接編寫代碼進行測試了,主要代碼如下,非常簡單:

點擊運行這個程序,效果如下:

kivy

這是一個跨平台的GUI應用程序開發庫,可以用來開發安卓、蘋果應用,一套程序,可以處處運行,下面我簡單介紹一下這個庫的安裝和使用:

1.首先,安裝kivy,這個直接按官方教程安裝就行,如下:

2.安裝完成後,就可以直接編寫代碼進行測試了,主要代碼如下,非常簡單:

點擊運行程序,效果如下,這里你可以將其打包為手機應用,安裝到手機上:

wxpython

這也是一個免費、跨平台的PythonGUI開發庫,相比較前面的tkinter來說,功能更為強大,控制項也更多,下面我簡單介紹一下這個庫的安裝和使用:

1.首先,安裝wxpython,這個也直接在cmd窗口輸入命令「pipinstallwxpython」就行,如下:

2.安裝完成後,我們就可以直接編寫相關代碼進行測試了,主要代讓枯碼如下,非常簡單,一個簡單的文本編輯器:

點擊運行這個程序,效果如下:

pyqt

這個Qt的一個Python介面庫,藉助於Qt強大的用戶界面,Python也可以快速開發出GUI程序,組件更多,也更方便,只要你有一定的Qt基礎,很快就能掌握這個庫的使用,下面我簡單介紹一下這個庫的安裝和使用:

1.首先,安裝pyqt,這個直接在cmd窗口輸入安裝命令「pipinstallpyqt5」就行,如下,安裝需要稍微等待一會兒:

2.安裝完成後,我們就可以直接編寫代碼進行測試了,如下,一個簡坦消洞單的計算器:

點擊運行這個程序,效果如下:

至此,我們就介紹完了這5個PythonGUI庫。總的來說,這5個庫使用起來都非常不錯,如果你的應用界面比較簡單,功能要求不高,可以選擇tkinter和easygui,如果界面比較復雜,功能要求比較復雜,可以考慮使用wxpython或pyqt,當然,你也可以使用其他GUI庫,像pygame等,根據實際項目需求而定,網上也有相關資料和教程,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言。

4. 基於Python+UIautomation的WindowsGUI自動化測試實戰

1 測試需求
模擬用戶操作,打開記事本進行內容輸入

2 測試步驟
2.1 用例1
打開記事本;
窗口最大化;
輸入"人生苦短,我用Python!";
關閉窗口;
不保存直接退出。
2.2 用例2
打開記事本;
窗口最大化
輸入:
Python之禪!
優美勝於醜陋(Python 以編寫優美的代碼為目標)
明了勝於晦澀(優美的代碼應當是明了的,命名規范,風格相似)
簡潔勝於復雜(優美的代碼應當是簡潔的,不要有復雜的內部實現)
復雜勝於凌亂(如果復雜不可避免,那代碼間也不能有難懂的關系,要保持介面簡潔)
扁平勝於嵌套(優美的代碼應當是扁平的,拍核不能有太多的嵌套)
間隔勝於緊湊(優美的代碼有適當的間隔,不要奢望一行代碼解決問題)
可讀性很重要(優美的代碼是可讀的)
即便假借特例的實用性之名,也不可違背這些規則(這些規則至高無上)
不要包容所有錯誤,除非你確定需要這樣做(精準地捕獲異常,不寫 except:pass 風格的代碼)
當存在多種可能,不要嘗試去猜測
而是盡量找一種,最好是唯一一種明顯的解決方案(如果不確定,就用窮舉法)
雖然這並不容易,因為你不是 Python 之父(這里的 Dutch 是指 Guido )
做也許好過不做,但不假思索就動手還不如不做(動手之前要細思量)
如果你無法向人描述你的方案,那肯定不是一個好方慶喊案;反之亦然(方案測評標准)
命名空間是一種絕妙的理念,我們應當多加利用(倡導譽賀野與號召)"

5. 如何學習 Python GUI 編程

在https://www.python.org/downloads/網頁中下載python3解釋器,我下載時候,版本是選擇的是3.3,因為python3和python2語法上有些區別,所以大家就跟我一樣都用python3吧,或許有朋友對於「語法」這個詞不明白,沒關系,後面小編會給大家講到的。下好後,文件名為python-3.3.3.msi,當然因為我們下載時間不同,可能文件有所不同,比如你下的可能是python-3.4.0.msi,因為這個軟體也是在不斷升級中的
雙擊下載下來的安裝文件,一路都選「next」,到第三步「Customize Python 」,在列表中的「Add python.exe to Path」前的紅叉上點擊滑鼠左鍵,然後選擇第一項「will be installed on local hard drive」,然後再點next,再稍等幾分鍾,python的解釋器就安裝好了。

然後我們在「開始」-->「所有程序」中找到python

選擇IDLE(Python GUI),這是一個提供圖形化界面的python編程軟體,如果不用這個,我們就只有用那個黑色的框框了。打開IDLE,界面如下:

看到游標在「>>>」後面閃爍了吧,我們在「>>>」後面輸入命令,按下回車後,python解釋器就會解釋並執行這條命令了。好了,我們還是以最經典的入門程序來作為我們用python寫的第一個程序吧。我們用鍵盤敲入「print("hello world")」,在屏幕上顯示「hello word」,注意print後的括弧是英文括弧,而且編程語言中的符號都是英文符號,大家特別注意。敲下回車後,看到下面是不是顯示了「hello world」,注意此時 hello world前沒有「>>>」,這個表明「hello world」是輸出結果。

接下來我們輸出一句中文,我們鍵入命令「print("你好,朋友")」,按下回車後,我們也會看到下面顯示了「你好,朋友」,注意我在描述時都為命令加了雙引號用於區別,大家在敲入命令時是不需要最外面的雙引號的,但是print中是需要雙引號的。

6. 如何使用pyQT做pythonGUI界面

步驟如下:
在開始菜單所有應用中找到PyQt文件夾下的Designer,雙擊打開。
新建窗體對話框選擇「Dialog
without
Buttons」,點擊創建按鈕。
在左側控制項欄中拖入一個Label和一個Line
Edit並將其選中後進行拖動復制位三個。再從左側拖入一個
PushButton按鈕。
雙擊Label和PushButton控制項,輸入名稱,使其符合要求。
分別選中單個控制項,在右側屬性欄中修改其屬性,並擺放好大致位置。修改屬性應包括給控制項一個見名知意的對象名稱;密碼Line
Edit控制項的echoMode屬性的值設置為Password,即不可見;精確調整控制項大小和擺放位置,使之對齊等等(擺放位置亦可通過下述的「布局」進行對齊)。
單擊菜單欄的Edit,編輯Tab順序,從上到下依次是1,2,3,4。
從左側拖入一個Horizontal
Spacer控制項置於PushButton控制項同行左側,並修改使其長度適宜。分別選擇位於同一行的控制項並點擊「窗口」中的「水平布局」,最後選中所有,點擊「窗口」下拉菜單下的「垂直布局」。選中所有,並「柵格布局」和調整對話框到合適大小,結果如下。
切換到「編輯信號/槽」模式,拖動確定到空白位置。在彈出的「配置連接」對話框中左選擇「clicked()」,右選擇「accept()」。
保存為ui文件,不妨命名為test。
終端下使用盤符和cd命令進入到ui文件所在的位置。需要注意的是,進入位置需要分兩步走。例如ui保存在
C:/savehere/,而當前的目錄是在D:/,則我們要命令提示符窗口運行C:和cd
C:/savehere/,不區分先後順序。
進入目錄後,使用pyuic4工具進行轉化,具體敲pyuic4
test.ui
-o
test.py,並回車。
右鍵點擊在test.ui相同目錄下生成test.py,選擇Edit
with
IDLE。就可看到代碼。

7. 如何使用pyQT做pythonGUI界面

首先,如果沒有安裝python和PyQt軟體的請先直接搜索下載並安裝。python是一個開源軟體,因此都是可以在網上免費下載的,最新版本即可。下載完成後,我們先打開PyQt designer。

2
打開後,首先是一個默認的新建窗口界面,在這里我們就選擇默認的窗口即可。

3
現在是一個完全空白的窗口。第一步我們要先把所有的設計元素都拖進這個窗口。我們先拖入一個「Label」,就是一個不可編輯的標簽。

4
隨後我們再拖入一個可以編輯的「Line Edit」

5
最後我們拖入最後一個元素:「PushButton」按鈕,也就是平時我們所點的確定。

6
目前我們已經把所有所需要的元素都拖入了新建的窗口。對於每一個元素,我們都可以雙擊進行屬性值的修改,此時我們僅需要雙擊改個名字即可

7
此時我們已經完成了一半,接下來需要對動作信號進行操作。我們需要先切入編輯信號的模式

8
此時把滑鼠移動到任意元素,都會發現其變成紅色,代表其被選中。

9
當我們選中pushbutton後,繼續拖動滑鼠指向上面的line edit,會發現由pushbutton出現一個箭頭指向了line edit,代表pushbutton的動作會對line edit進行操作。

10
隨即會彈出一個配置連接窗口。左邊的是pushbutton的操作,我們選擇clicked(),即點擊pushbutton。

右邊是對line edit的操作,我們選擇clear(),即清楚line edit中的內容。

最後我們點擊確定。

保存完成後,我們在PyQt中的操作就已經完成了。保存的文件名我們命名為test,PyQt生成的設計文件後綴是.ui。

然後我們需要把.ui文件轉換成可編譯的.py文件,我們需要用到PyQt提供的pyuic4命令來完成轉換。這是一個DOS命令,因此我們需要調出DOS操作界面。打開開始菜單,找到附件中的運行。

在運行中輸入cmd,確定後即可打開DOS界面。

在DOS界面下,我們需要定位到剛才保存的.ui文件的位置,如果是默認的話,會保存在C:\Python27\Lib\site-packages\PyQt4,定位的過程如圖所示。轉換成.py文件的命令是:pyuic4 test.ui -o test.py

轉換命令執行後,會生成一個test.py的文件,如圖所示

最後我們需要對生成的python文件加入頭文件和主函數,就可以生成一個完整的GUI程序了!首先是在整個程序的最開頭加入import sys,如圖所示。

另外,在程序的末尾,加入如圖所示的主函數代碼。主函數會調用我們再PyQt里已經完成的生成元素的函數以及配置連接函數,因此我們只需要加上主函數來調用他們即可。

保存後,雙擊我們編輯完成的python文件,就會彈出我們剛才設計的GUI界面啦!這就是我們所完成的第一個用python語言寫的GUI程序啦!

閱讀全文

與pythongui實例教程相關的資料

熱點內容
智能網路攝像頭加密 瀏覽:570
軟體畢業程序員培訓 瀏覽:650
安卓陀螺儀低怎麼辦 瀏覽:245
一級建造師復習題集pdf 瀏覽:901
法理學pdf海默 瀏覽:390
伺服器內存儲器是用什麼的 瀏覽:817
微幫同城分類信息源碼 瀏覽:806
安卓系統ad是什麼 瀏覽:471
python輸出中不加佔位符 瀏覽:594
linux文件夾許可權控制 瀏覽:728
雅虎郵箱怎麼加密碼 瀏覽:819
為什麼安卓手機登錄不了蘋果賬號 瀏覽:535
如何復制usb加密狗 瀏覽:799
哪個app看你微笑時很美 瀏覽:908
mac啟動命令 瀏覽:602
ngc伺服器是什麼的簡稱 瀏覽:73
深度系統如何創建文件夾 瀏覽:847
臨汾單片機步進電機驅動電路 瀏覽:76
全新勝達天窗能編程嗎 瀏覽:320
ug常用命令 瀏覽:349