之前菜鳥小白也寫過(guò)一些小工具界面,使用的是python內(nèi)置的tkinter庫(kù),需要注意窗口、組件的大小和位置排列,比較麻煩(想了解的可以看看之前的文章《太實(shí)用了!自己動(dòng)手寫軟件——GUI編程》)。
今天菜鳥小白發(fā)現(xiàn)一個(gè)比較有趣的python項(xiàng)目,叫做Gooey,號(hào)稱能把任何控制臺(tái)應(yīng)用程序轉(zhuǎn)換為非常美觀的的GUI應(yīng)用程序。獲贊1萬(wàn)多顆星,非常厲害。
圖片
安裝
它的安裝非常簡(jiǎn)單,直接使用pip安裝即可。
pip install Gooey
一開始安裝的時(shí)候忘記截圖了,這里就不展示截圖了,安裝的時(shí)候大概需要個(gè)十幾秒的時(shí)間。
使用舉例
我們先看看下面這個(gè)簡(jiǎn)單的程序。
import gooey
from gooey import Gooey
@Gooey(encodings='utf-8', program_name='菜鳥小白的測(cè)試', program_description='舉例測(cè)試', language='chinese')
def test():
parser = gooey.GooeyParser(description='GUI') # 配置名稱
parser.add_argument('選擇本地文件夾', widget='DirChooser') # 文件夾選擇框
parser.add_argument('選擇本地文件', widget='FileChooser') # 文件夾選擇框
parser.add_argument('輸入文本內(nèi)容', widget='TextField') # 文本輸入框
parser.add_argument('選擇日期', widget='DateChooser') # 日期選擇框
args = parser.parse_args()
print(args)
if __name__ == '__main__':
test()
程序運(yùn)行起來(lái)之后的效果是這樣的。
圖片
組件說(shuō)明
上面我們是給大家展示了一些組件的效果,當(dāng)前Gooey支持的組件空間有如下內(nèi)容:

image.png
實(shí)現(xiàn)四則運(yùn)算計(jì)算器
接下來(lái)我們通過(guò)今天看到的Gooey庫(kù),實(shí)現(xiàn)一個(gè)四則運(yùn)算計(jì)算器。首先上代碼。
@Gooey(encodings='utf-8', program_name='菜鳥小白的計(jì)算器', program_description='四則計(jì)算器', language='chinese')
def test():
parser = gooey.GooeyParser(description='GUI') # 配置名稱
# parser.add_argument('選擇本地文件夾', widget='DirChooser') # 文件夾選擇框
parser.add_argument('數(shù)字1', widget='TextField') # 文本輸入框
parser.add_argument('數(shù)字2', widget='TextField') # 文本輸入框
parser.add_argument('運(yùn)算法則', help='僅支持+-*/四則運(yùn)算', widget='TextField') # 文本輸入框
args = parser.parse_args()
num1 = float(args.數(shù)字1) # 獲取輸入框內(nèi)容
num2 = float(args.數(shù)字2)
sign = args.運(yùn)算法則
return num1, num2, sign
def main():
num1, num2, sign = test()
if sign == "+":
result = num1 + num2
elif sign == "-":
result = num1 - num2
elif sign == "*":
result = num1 * num2
elif sign == "/":
result = num1 / num2
else:
result = "請(qǐng)輸入合法四則運(yùn)算符"
print(result)
首先我們定義出來(lái)界面的名稱等信息
@Gooey(encodings='utf-8', program_name='菜鳥小白的計(jì)算器', program_description='四則計(jì)算器', language='chinese')
然后我們定義了三個(gè)文本輸入框作為計(jì)算器的輸入。
parser.add_argument('數(shù)字1', widget='TextField') # 文本輸入框
parser.add_argument('數(shù)字2', widget='TextField') # 文本輸入框
parser.add_argument('運(yùn)算法則', help='僅支持+-*/四則運(yùn)算', widget='TextField') # 文本輸入框
然后我們需要將用戶輸入的內(nèi)容提取出來(lái)并返回
args = parser.parse_args()
num1 = float(args.數(shù)字1) # 獲取輸入框內(nèi)容
num2 = float(args.數(shù)字2)
sign = args.運(yùn)算法則
return num1, num2, sign
最后我們就是根據(jù)返回的內(nèi)容進(jìn)行計(jì)算,打印最終結(jié)果就好了。
num1, num2, sign = test()
if sign == "+":
result = num1 + num2
elif sign == "-":
result = num1 - num2
elif sign == "*":
result = num1 * num2
elif sign == "/":
result = num1 / num2
else:
result = "請(qǐng)輸入合法四則運(yùn)算符"
print(result)
最后我們來(lái)看個(gè)小視頻,看看最終的實(shí)現(xiàn)效果。

計(jì)算器操作視頻.gif