1. 程式人生 > >easygui學習文件

easygui學習文件

使用標準方法安裝:

  • 使用命令視窗切換到easygui-docs-0.96的目錄下
  • 【Windows下】執行C:\Python33\python.exe setup.py install
  • 【Linux或Mac下】sudo /usr/bin/python33 setup.py install

1. 建議不要在 IDLE 上執行 EasyGui

EasyGui 是執行在 Tkinter 上並擁有自身的事件迴圈,而 IDLE 也是 Tkinter 寫的一個應用程式並也擁有自身的事件迴圈。因此當兩者同時執行的時候,有可能會發生衝突,且帶來不可預測的結果。因此如果你發現你的 EasyGui 程式有這樣的問題,請嘗試在 IDLE 外去執行你的程式。

2. 一個簡單的例子

在 EasyGui 中,所有的 GUI 互動均是通過簡單的函式呼叫,下邊一個簡單的例子告訴你 EasyGui 確實很 Easy!

Python程式碼 

 收藏程式碼

  1. import easygui as g  
  2. import sys  
  3. while 1:  
  4.     g.msgbox("嗨,歡迎進入第一個介面小遊戲")  
  5.     msg = "請問你希望在魚C工作室學習到什麼知識呢"  
  6.     title="小遊戲互動"  
  7.     choices=["談戀愛","程式設計","OOXX","琴棋書畫"]  
  8.     choice=g.choicebox(msg,title,choices)  
  9.     #note that we convert choice to string,in case  
  10.     #the user cancelled the choice,and we got None  
  11.     g.msgbox("你的選擇是:"+str(choice),"結果")  
  12.     msg="你希望重新開始小遊戲嗎?"  
  13.     title=" 請選擇"  
  14.     if g.ccbox(msg,title):  #show a Contiue/Cancel dialog  
  15.         pass #user choose Continue  
  16.     else:  
  17.         sys.exit(0)  #user choose Cancel  

 3. EasyGui 的各種功能演示

要執行 EasyGui 的演示程式,在命令列呼叫 EasyGui 是這樣的:

Python程式碼 

 收藏程式碼

  1. C:\Python33\python.exe easygui.py  

 或者你可以從 IDE(例如 IDLE, PythonWin, Wing, 等等)上來呼叫:

Python程式碼 

 收藏程式碼

  1. >>> import easygui as g  
  2. >>> g.egdemo()  

 成功呼叫後你將可以嘗試 EasyGui 擁有的各種功能,並將你選擇的結果列印至控制檯。

4. 匯入 EasyGui

為了使用 EasyGui 這個模組,你應該先匯入它。最簡單的匯入語句是:

import easygui

如果你使用上面這種形式匯入的話,那麼你使用 EasyGui 的函式的時候,必須在函式的前面加上字首 easygui,像這樣:

easygui.msgbox(...)

另一種選擇是匯入整個 EasyGui 包:

from easygui import *

這使得我們更容易呼叫 EasyGui 的函式,你可以直接這樣編寫程式碼:

msgbox(...)

第三種方案是使用類似下邊的 import 語句:

import easygui as g


這樣可以讓你保持 EasyGui 的名稱空間,同時減少你的打字數量。匯入之後你就可以這麼呼叫 EasyGui 的函式:

g.msgbox(...)

5. 使用 EasyGui

一旦你的模組匯入 EasyGui,GUI 操作就是一個簡單的呼叫 EasyGui 函式的幾個引數的問題了。

例如,使用 EasyGui 來實現著名的“你好,世界!”程式是這樣的:

import easygui as g
        g.msgbox("Hello, world!")

6. EasyGui 函式的預設引數

對於所有函式而言,前兩個引數是訊息和標題。按照這個規律,在某種情況下,這可能不是最有利於使用者的安排(例如,對話方塊在獲取目錄和檔名的時候忽略訊息引數),但我覺得保持這種一致性貫穿於所有的視窗部件是一種更為重要的考慮!
   
絕大部分的 EasyGui 函式都有預設引數,幾乎所有的元件都會顯示一個訊息和標題。標題預設是空字串,資訊通常有一個簡單的預設值。
  
這使得你可以儘量少的去設定引數,比如 msgbox() 函式標題部分的引數就是可選的,所以你呼叫 msgbox() 的時候可以只指定一個訊息引數,例如:

>>> msgbox('我愛小甲魚^_^')

當然你也可以指定標題引數和訊息引數,例如:

>>> msgbox('我愛小甲魚^_^', '魚油心聲')

在各類按鈕元件裡,預設的訊息是"Shall I continue?",所以你可以不帶任何引數地去呼叫它們。這裡我們演示不帶任何引數地去呼叫 ccbox(),當選擇"cancel"或關閉視窗的時候返回一個布林型別的值:

if ccbox(): 
        pass         # user chose to continue
else: 
        return      # user chose to cancel

7. 使用關鍵字引數呼叫 EasyGui 的函式

呼叫 EasyGui 函式還可以使用關鍵字引數哦。(如忘了的童鞋翻出《零基礎入門學習Python》第18講自行腦補)

現在假設你需要使用一個按鈕元件,但你不想指定標題引數(第二個引數),你仍可以使用關鍵字引數的方法指定 choices 引數(第三個引數),像這樣:

>>> choices = ['願意', '不願意', '有錢的時候願意']
>>> reply = choicebox('你願意購買資源打包支援小甲魚嗎?', choices = choices)

8. 使用按鈕元件

根據需求,EasyGui 在 buttonbox() 上建立了一系列的函式供呼叫。


8.1 msgbox()

msgbox(msg='(Your message goes here)', title=' ', ok_button='OK', image=None, root=None)

msgbox() 顯示一個訊息和提供一個"OK"按鈕,你可以指定任意的訊息和標題,你甚至可以重寫"OK"按鈕的內容。
以下是 msgbox() 的例項函式:

def msgbox(msg="(Your message goes here)", title="", ok_button="OK"):
        ....

重寫"OK"按鈕最簡單的方法是使用關鍵字引數:

>>> msgbox("我一定要學會程式設計!", ok_button="加油!")

8.2 ccbox()

ccbox(msg='Shall I continue?', title=' ', choices=('Continue', 'Cancel'), image=None)

ccbox() 提供一個選擇:Continue 或者 Cancel,並相應的返回 1(選中Continue)或者 0(選中Cancel)。

注意 ccbox() 是返回整型的 1 或 0,不是布林型別的 True 或 False。但你仍然可以這麼寫:

if ccbox('要再來一次嗎?', choices=('要啊要啊^_^', '算了吧T_T')):
        msgbox('不給玩了,再玩就玩壞了......')
else:
        sys.exit(0) # 記得先 import sys 哈

8.3 ynbox()

ynbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None)

同上,都不知作者設計這兩玩意兒搞啥......


8.4 buttonbox()

buttonbox(msg='', title=' ', choices=('Button1', 'Button2', 'Button3'), image=None, root=None)

可以使用 buttonbox() 定義自己的一組按鈕,buttonbox() 會顯示一組你定義好的按鈕。

當用戶點選任意一個按鈕的時候,buttonbox() 返回按鈕的文字內容。如果使用者取消取消或者關閉視窗,那麼會返回預設選項(第一個選項)。請看例子:

8.5 indexbox()

indexbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None)

基本跟上邊一樣,區別就是當用戶選擇第一個按鈕的時候返回序號 0, 選擇第二個按鈕的時候返回序號 1。


8.6 boolbox()

boolbox(msg='Shall I continue?', title=' ', choices=('Yes', 'No'), image=None)

如果第一個按鈕被選中則返回 1,否則返回 0。


9. 如何在 buttonbox 裡邊顯示圖片

當你呼叫一個 buttonbox 函式(例如 msgbox(), ynbox(), indexbox() 等等)的時候,你還可以為關鍵字引數 image 賦值,這是設定一個 .gif 格式的影象(注意僅支援 GIF 格式哦)

 

10. 為使用者提供一系列選項

10.1 choicebox()

choicebox(msg='Pick something.', title=' ', choices=())

按鈕元件方便提供使用者一個簡單的按鈕選項,但如果有很多選項,或者選項的內容特別長的話,更好的策略是為它們提供一個可選擇的列表。   
   
choicebox() 為使用者提供了一個可選擇的列表,使用序列(元祖或列表)作為選項,這些選項顯示前會按照不區分大小寫的方法排好序。

另外還可以使用鍵盤來選擇其中一個選項(比較糾結,但一點兒都不重要):

  • 例如當按下鍵盤上的"g"鍵,將會選中的第一個以"g"開頭的選項。再次按下"g"鍵,則會選中下一個以"g"開頭的選項。在選中最後一個以"g"開頭的選項的時候,再次按下"g"鍵將重新回到在列表的開頭的第一個以"g"開頭的選項。
  • 如果選項中沒有以"g"開頭的,則會選中字元排序在"g"之前("f")的那個字元開頭的選項
  • 如果選項中沒有字元的排序在"g"之前的,那麼在列表中第一個元素將會被選中。


綜合我們之前學習的檔案功能,舉個高達上的例子(原始碼在第35講的課後作業中^_^):

10.2 multchoicebox()

multchoicebox(msg='Pick as many items as you like.', title=' ', choices=(), **kwargs)

multchoicebox() 函式也是提供一個可選擇的列表,與 choicebox() 不同的是,multchoicebox() 支援使用者選擇 0 個,1 個或者同時選擇多個選項。

multchoicebox() 函式也是使用序列(元祖或列表)作為選項,這些選項顯示前會按照不區分大小寫的方法排好序。

11. 讓使用者輸入訊息

11.1 enterbox()

enterbox(msg='Enter something.', title=' ', default='', strip=True, image=None, root=None)

enterbox() 為使用者提供一個最簡單的輸入框,返回值為使用者輸入的字串。預設返回的值會自動去除首尾的空格,如果需要保留首尾空格的話請設定引數 strip=False。

11.2 integerbox()

integerbox(msg='', title=' ', default='', lowerbound=0, upperbound=99, image=None, root=None, **invalidKeywordArguments)

integerbox() 為使用者提供一個簡單的輸入框,使用者只能輸入範圍內(lowerbound引數設定最小值,upperbound引數設定最大值)的整型數值,否則會要求使用者重新輸入。


11.3 multenterbox()

multenterbox(msg='Fill in values for the fields.', title=' ', fields=(), values=())

multenterbox() 為使用者提供多個簡單的輸入框,要注意以下幾點:
 

  • 如果使用者輸入的值比選項少的話,則返回列表中的值用空字串填充使用者為輸入的選項。
  • 如果使用者輸入的值比選項多的話,則返回的列表中的值將截斷為選項的數量。
  • 如果使用者取消操作,則返回域中的列表的值或者None值。


實現如下圖(原始碼在第35講的課後作業中^_^):

12. 讓使用者輸入密碼

有時候我們需要讓使用者輸入密碼,就是使用者輸入的東西看上去都是"*******"。


12.1 passwordbox()

passwordbox(msg='Enter your password.', title=' ', default='', image=None, root=None)

passwordbox() 跟 enterbox() 樣式一樣,不同的是使用者輸入的內容用"*"顯示出來,返回使用者輸入的字串:

12.2 multpasswordbox()

multpasswordbox(msg='Fill in values for the fields.', title=' ', fields=(), values=())

multpasswordbox() 跟 multenterbox() 使用相同的介面,但當它顯示的時候,最後一個輸入框顯示為密碼的形式("*"):

13. 顯示文字

EasyGui 還提供函式用於顯示文字。


13.1 textbox()

textbox(msg='', title=' ', text='', codebox=0)

textbox() 函式預設會以比例字型(引數 codebox=1 設定為等寬字型)來顯示文字內容(會自動換行哦),這個函式適合用於顯示一般的書面文字。

注:text 引數(第三個引數)可以是字串型別,列表型別,或者元祖型別。

13.2 codebox()

codebox(msg='', title=' ', text='')

codebox() 以等寬字型顯示文字內容,相當於 textbox(codebox=1)

注:等寬字型很醜的,不信你試試看@[email protected]


14. 目錄與檔案

GUI 程式設計中一個常見的場景是要求使用者輸入目錄及檔名,EasyGui 提供了一些基本函式讓使用者來瀏覽檔案系統,選擇一個目錄或檔案。


14.1 diropenbox()

diropenbox(msg=None, title=None, default=None)

diropenbox() 函式用於提供一個對話方塊,返回使用者選擇的目錄名(帶完整路徑哦),如果使用者選擇"Cancel"則返回 None。

default 引數用於設定預設的開啟目錄(請確保設定的目錄已存在)。

14.2 fileopenbox()

fileopenbox(msg=None, title=None, default='*', filetypes=None)

fileopenbox() 函式用於提供一個對話方塊,返回使用者選擇的檔名(帶完整路徑哦),如果使用者選擇"Cancel"則返回 None。

關於 default 引數的設定方法:
 

  • default 引數指定一個預設路徑,通常包含一個或多個萬用字元。
  • 如果設定了 default 引數,fileopenbox() 顯示預設的檔案路徑和格式。
  • default 預設的引數是'*',即匹配所有格式的檔案。


例如:
 

  • default="c:/fishc/*.py" 即顯示 C:\fishc 資料夾下所有的 Python 檔案。
  • default="c:/fishc/test*.py" 即顯示 C:\fishc 資料夾下所有的名字以 test 開頭的 Python 檔案。


關於 filetypes 引數的設定方法:
 

  • 可以是包含檔案掩碼的字串列表,例如:filetypes = ["*.txt"]
  • 可以是字串列表,列表的最後一項字串是檔案型別的描述,例如:filetypes = ["*.css", ["*.htm", "*.html", "HTML files"]]

14.3 filesavebox()

filesavebox(msg=None, title=None, default='', filetypes=None)

filesavebox() 函式提供一個對話方塊,讓用於選擇檔案需要儲存的路徑(帶完整路徑哦),如果使用者選擇"Cancel"則返回 None。

default 引數應該包含一個檔名(例如當前需要儲存的檔名),當然你也可以設定為空的,或者包含一個檔案格式掩碼的萬用字元。

filetypes 引數的設定方法請參考上邊。

15.1 EgStore

GUI 程式設計中一個常見的場景就是要求使用者設定一下引數,然後儲存下來,以便下次使用者使用你的程式的時候可以記住他的設定。

為了實現對使用者的設定進行儲存和恢復這一過程,EasyGui 提供了一個叫做 EgStore 的類。為了記住某些設定,你的應用程式必須定義一個類(暫時稱之為"設定"類,儘管你隨意地使用你想要的名稱設定它)繼承自 EgStore 類。

然後你的應用程式必須建立一個該類的物件(暫時稱之為"設定"物件)。

設定類的建構函式(__init__ 方法)必須初始化所有的你想要它所記住的那些值。

一旦你這樣做了,你就可以在"設定"物件中通過設定值去例項化變數,從而很簡單地記住設定。之後使用 settings.store() 方法在硬碟上持久化設定物件。

下面是建立一個"設定"類的例子:

Python程式碼 

 收藏程式碼

  1. #-----------------------------------------------------------------------  
  2. # create "settings", a persistent Settings object  
  3. # Note that the "filename" argument is required.  
  4. # The directory for the persistent file must already exist.  
  5. #-----------------------------------------------------------------------  
  6. settingsFilename = os.path.join("C:", "FishCApp", "settings.txt")  # Windows example  
  7. settings = Settings(settingsFilename)  

 下面是使用"設定"物件的例子:

Python程式碼 

 收藏程式碼

  1. # we initialize the "user" and "server" variables  
  2. # In a real application, we'd probably have the user enter them via enterbox  
  3. user    = "奧巴馬"  
  4. server  = "白宮"  
  5. # we save the variables as attributes of the "settings" object  
  6. settings.userId = user  
  7. settings.targetServer = server  
  8. settings.store()    # persist the settings  
  9. # run code that gets a new value for userId  
  10. # then persist the settings with the new value  
  11. user    = "小甲魚"  
  12. settings.userId = user  
  13. settings.store()  

 16. 捕獲異常

exceptionbox()

使用 EasyGui 編寫 GUI 程式,有時候難免會產生異常。當然這取決於你如何執行你的應用程式,當你的應用程式崩潰的時候,堆疊追蹤可能會被丟擲,或者被寫入到 stdout 標準輸出函式中。

EasyGui 通過 exceptionbox() 函式提供了更好的方式去處理異常,異常出現的時候,exceptionbox() 會顯示堆疊追蹤在一個 codebox() 中並且允許你做進一步的處理。

exceptionbox() 很容易使用,下面是一個例子:

Python程式碼 

 收藏程式碼

  1. try:  
  2.         print('I Love FishC.com!')  
  3.         int('FISHC') # 這裡會產生異常  
  4. except:  
  5.         exceptionbox()  

相關推薦

EasyGui 學習【超詳細中文版】[增強版]

翻譯改編自官方文件:http://easygui.sourceforge.net/tutorial/index.html 翻譯改編者:小甲魚,本文歡迎轉載,轉載請保證原文的完整性! 演示使用 Python 3.3.3 版本0. 安裝 EasyGui 官網:http://ea

EasyGUI 學習

目錄 由於版本更迭,本篇所有示例及截圖均已更新,最新演示版本為 EasyGUI 0.98 & Python 3.7。 注意:由於模組、Python 版本或系統環境的差異,書中涉及的演示截圖與實際環

easygui學習

使用標準方法安裝: 使用命令視窗切換到easygui-docs-0.96的目錄下 【Windows下】執行C:\Python33\python.exe setup.py install 【Linux或Mac下】sudo /usr/bin/python33

Python:EasyGUI v0.96學習

使用命令視窗切換到easygui-docs-0.96的目錄下 【Windows下】執行C:\Python33\python.exe setup.py install 【Linux或Mac下】sudo /usr/bin/python33 setup.py install

Ubuntu學習 權限

表示 就是 ubuntu 復制 權限 復制代碼 數字 寫的權限 root 文件權限```rwxrwxr-- : 三組rwx 分別表示 所有者、所有組、其他人 的權限。r : 表示可讀, 可以用數字 4 來表示w : 標識可寫 ,可以用數字 2 來表示x : 表示可執行 ,

Linux學習-管理(1)

詳細信息 src 最長 mod 展開 重新啟動 upper 填充 虛擬 文件管理——當你使用Linux時,大部分時間都會和文件打交道,我們需要了解基本的文件操作,如創建文件、刪除文件、復制文件、重命名文件以及為文件創建鏈接等。目錄 文件的組成 目錄結構

Linux學習-管理(2)

mdi 批量 字符 nbsp ren 交互 替換 mkdir -p txt 九、移動、重命名文件 mv 移動文件 格式:mv+源文件+目標 -i 交互式,覆蓋前提示 -f 強制覆蓋 rm 刪除文件和目錄 -i

(獨孤九劍)--PHP視頻學習--系統

獲取文件 pen 讀取 warning 寫入 字符型 級別 fread 資源 【一】文件系統概述 文件的創建,刪除,編輯,復制,粘貼(移動),即文件的增刪改查 【二】讀取文件 打開讀取:readfile(string),傳入文件路徑即可打開讀取(如讀取成功,則返回字節數

shell學習操作之sort,cut,uniq

3linux系統使用過程中,我們經常需要對文件進行一些操作分析,例如對文本進行分類排序,去重,截取一些規則化字段。cut,sort,uniq很方便使用。 1.sort:一般有三種模式,分別為排序文本,檢查文件,合並文件。 常用方法及參數 sort [option] [file] -b,#忽略前空格或者制表

Python學習——操作和異常處理

not ret lease ext title eas err turn with # title = "Alice in Wonderland"# print(title.split())def count_words(filename): ‘‘‘ count ho

Python學習-操作

code see ref 字符 pri lines 清空 文件的 末尾 使用open函數創建文件對象, 然後就可以使用文件對象(file)常用的函數. 例: f = open(‘/path/to/targetfile/test.txt‘, mode=‘r‘, encodin

Linux(RedHat)基礎學習尋址與管理

fcc 強制 表示 命名 mv命令 追加內容 size tar tro 1.系統結構 Linux系統目錄結構 /:根目錄,linux系統中最高層目錄。在根目錄下的目錄叫

Linux(RadHat)基礎學習權限

chgrp 訪問 用戶權限 文件屬性 vpd 冒險位 images ont use 文件權限的意義:系統最底層安全設定方法之一,保證文件可以被可用的用戶作相應操作 1.文件屬性的查看 ls -l filename 等同於 ll filename (文件屬性) ls

Linux(RadHat)基礎學習傳輸

文件歸檔 路徑 遠程同步 syn code tar.xz mnt 文件上傳 進行 1.scp傳輸 scp:遠程復制傳輸,速度很慢 目錄上傳: scp -r 目錄 用戶名@主機ip:絕對路徑 文件上傳 scp 文件 用戶名@主機ip:絕對路徑 遠程下

Python學習操作

like import false 不能 pfile 返回 unicode 支持 zip 1.文件基礎知識 1.文件是存儲在外部介質上的數據的集合,文件的基本單位是字節,文件所含的字節數就是文件的長度。每個字節都有一個默認的位置,位置從0開始,文件頭的位置就是0,文件尾的位

ElasticSearch學習2018.11

1       Elasticsearch安裝 1.1    ES6.0版本安裝head外掛 1.1 下載head外掛 下載地址:https://github.com/mobz/elasticsearch-head

近期學習

node node 基礎 https://www.runoob.com/nodejs/nodejs-tutorial.html node api 查詢 http://nodejs.cn/api/ vue 基礎 https://router.vuejs.org/zh

Tushare學習(十 電影票房)

import tushare  as ts 1.實時票房 ts.realtime_boxoffice() BoxOffice 實時票房(萬) Irank 排名 MovieName 影片名 boxPer 票房佔比 (%) movieD

Tushare學習(六 新聞事件資料)

import  tushare  as  ts 1.即時新聞 ts.get_latest_news()  ,預設是80條新聞 ts.get_latest_news(數字小於八十) ts.get_latest_news(top=10,show_conten

Tushare學習(三 股票分類資料)

import tushare as ts 1.行業分類 ts.get_industry_classified()   2.概念分類 ts.get_concept_classified()   3.地域分類 ts.get_area_classified()