1. 程式人生 > >python 10 else EasyGui(轉載)

python 10 else EasyGui(轉載)

關鍵字參數 比例 形式 要求 應用 布爾類型 pytho 自己 any

else語句

if    else      要麽怎麽樣,要麽不怎麽樣

while    else      幹完了能怎樣,幹不完就不怎樣

(異常處理)    else    沒有問題,就幹吧

try:
int(‘a‘)

except ValueError as reason:
print(‘出錯‘ + str(reason) )


else:
print(‘ok‘)

如果不用with語句,代碼如下:

file = open("/tmp/foo.txt")

data = file.read()

file.close()

這裏有兩個問題:

一是可能忘記關閉文件句柄;
二是文件讀取數據發生異常,沒有進行任何處理。

下面是處理異常的加強版本:

try:

f = open(‘xxx‘)

except:

print ‘fail to open‘

exit(-1)

try:

do something

except:

do something

finally:

f.close()

with自動關閉文件

with open("/tmp/foo.txt") as file:

data = file.read()

try:
with open (‘123‘,‘w‘) as f:    
for e in f:
peint(e)
except OSError as reason:
print(‘出錯‘ + str(reason) )

圖形用戶界面  EasyGui

python setup.py install    #安裝python的命令行

建議不要在 IDLE 上運行 EasyGui

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

import easygui

easygui.msgbox(‘hi‘)

技術分享圖片

導入整個 EasyGui 包,省掉每次的easygui

from easygui import *

msgbox(‘hi‘)

命名成g

import easygui as g

g.msgbox(‘hi‘)

msgbox() 顯示一個消息和提供一個"OK"按鈕,你可以指定任意的消息和標題

g.msgbox(msg="我一定要學會編程!",title="標題部分",ok_button="加油")

技術分享圖片

ccbox() 提供一個選擇:Continue 或者 Cancel,並相應的返回 1(選中Continue)或者 0(選中Cancel)。註意 ccbox() 是返回整型的 1 或 0,不是布爾類型的 True 或 False。

if g.ccbox("親愛的還玩嗎?",choices=("還要玩!","算了吧/(ㄒoㄒ)/~~")):

  g.msgbox("還是不玩了,快睡覺吧!")

技術分享圖片

還要玩!時返回1,執行接下來的判斷內容

ynbox()老實說,這個函數和ccbox()功能一模一樣

4、buttombox()

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

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

當用戶點擊任意一個按鈕的時候,buttonbox() 返回按鈕的文本內容。如果用戶取消取消或者關閉窗口,那麽會返回默認選項(第一個選項)。請看例子:

技術分享圖片

5、indexbox()

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

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

6、boolbox()

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

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

7、在buttonbox()中顯示圖片

當你調用一個 buttonbox 函數(例如 msgbox(), ynbox(), indexbox() 等等)的時候,

你還可以為關鍵字參數 image 賦值,這是設置一個 .gif 格式的圖像(註意僅支持 GIF 格式哦):

技術分享圖片

8、choicebox()

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

按鈕組件方便提供用戶一個簡單的按鈕選項,但如果有很多選項,或者選項的內容特別長的話,更好的策略是為它們提供一個可選擇的列表。

choicebox() 為用戶提供了一個可選擇的列表,使用序列(元祖或列表)作為選項,這些選項顯示前會按照不區分大小寫的方法排好序。

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

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

綜合我們之前學習的文件功能,舉個通俗的例子

9、mutchoicebox()

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

multchoicebox() 函數也是提供一個可選擇的列表,與 choicebox() 不同的是,multchoicebox() 支持用戶選擇 0 個,1 個或者同時選擇多個選項。
multchoicebox() 函數也是使用序列(元祖或列表)作為選項,這些選項顯示前會按照不區分大小寫的方法排好序。

技術分享圖片

10、enterbox()

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

enterbox() 為用戶提供一個最簡單的輸入框,返回值為用戶輸入的字符串。

默認返回的值會自動去除首尾的空格,如果需要保留首尾空格的話請設置參數 strip=False。

技術分享圖片

11、interbox()

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

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

技術分享圖片

12、mulenterbox()

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

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

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

技術分享圖片

技術分享圖片

13、passwordbox()

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

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

技術分享圖片

14、multpasswordbox()

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

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

技術分享圖片

15、textbox()

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

textbox() 函數默認會以比例字體(參數 codebox=1 設置為等寬字體)來顯示文本內容(會自動換行哦),這個函數適合用於顯示一般的書面文字。
註:text 參數(第三個參數)可以是字符串類型,列表類型,或者元祖類型。

python 10 else EasyGui(轉載)