1 import urllib.request 2 import json 3 """ 4 1, 把本文件改爲 main.py 文件名 5 6 7 2, 從此須要編寫圖形界面程序, 咱們使用 kivy 這個開發框架來作這件事, 先安裝 kivy 8 9 Windows 安裝方法: 10 0, 打開 cmd 11 12 1, 輸入 python --version 檢查並確保安裝的是不是 Python 3.6.5 13 14 2, 在命令行輸入如下命令進行安裝,須要必定的時間,耐心等待,若是有錯誤到羣裏提問討論 15 python -m pip install --upgrade pip wheel setuptools 16 python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew 17 python -m pip install kivy.deps.gstreamer 18 python -m pip install kivy 19 20 21 22 Mac 安裝方法(請嚴格按照指令執行, 不要自創): 23 0, 下載羣文件中的 Kivy-1.10.0-osx-10.12.5-python3.5.dmg 文件 24 25 1, 確保你的系統是 10.12 以上 26 27 2, 雙擊 dmg 文件打開, 把 Kivy.app 拖入 /Applications 目錄 28 29 3, 完成步驟 2 後 30 1) 右鍵(必須右鍵) MakeSymlinks 文件 31 2) 點擊打開 32 3) 在彈出的對話框中點再點擊打開 33 4) 彈出的終端窗口顯示 [Process completed] 後能夠關閉 34 35 4, 進入 /Applications 目錄找到 Kivy.app 文件 36 1) 右鍵(必須右鍵) 37 2) 點擊打開 38 3) 在彈出的對話框中點再點擊打開 39 40 41 3, 運行程序 42 可使用 Pycharm 編輯代碼 43 44 Windows 運行代碼方法: 45 在 pycharm 中運行 46 47 Mac 運行代碼方法 48 把代碼放在桌面上, 更名爲 main.py 49 運行代碼須要在 終端 中進行 50 打開終端, 輸入下面的命令運行程序(能夠複製粘貼) 51 kivy ~/Desktop/main.py 52 53 54 55 4, 參考下面的代碼, 結合項目 4, 實現一個圖形化查詞軟件 56 """ 57 from kivy.app import App 58 from kivy.config import Config 59 from kivy.uix.textinput import TextInput 60 from kivy.uix.boxlayout import BoxLayout 61 62 63 def openurl(url): 64 # 下載頁面, 獲得的是一個 bytes 類型的變量 s 65 s = urllib.request.urlopen(url).read() 66 # 用 utf-8 編碼把 s 轉爲字符串並返回 67 content = s.decode('utf-8') 68 return content 69 70 71 def translate(word): 72 """ 73 word 是一個不包含空格的單詞 74 """ 75 key = '3C2D3651D97914DC028F61B2C4F883C0' 76 url = 'http://dict-co.iciba.com/api/dictionary.php?type=json&key={}&w={}'.format( 77 key, word) 78 s = openurl(url) 79 d = json.loads(s) 80 d = d['symbols'][0]['parts'] 81 result = [] 82 for i in d: 83 key = i['part'] 84 value = i['means'] 85 result.append(key) 86 result.append('\n') 87 for j in range(len(value)): 88 result.append(value[j]) 89 result.append('\n') 90 string = '' 91 for i in result: 92 string = string + i 93 return string 94 95 96 def font_name(): 97 """ 98 蘋果系統和微軟系統須要不一樣的字體文件 99 """ 100 from sys import platform 101 if platform == "darwin": 102 return 'Arial Unicode' 103 elif platform == "win32": 104 return 'SimHei' 105 else: 106 print('not support') 107 108 109 # 程序必定是一個繼承自 App 的 xxApp 類做爲起點 110 class TestApp(App): 111 # build 函數是固定的, 它用於生成界面 112 def build(self): 113 self.config_window() 114 root = self.setup_ui() 115 return root 116 117 def config_window(self): 118 """ 119 這裏設置了 3 個屬性, 這是固定的寫法 120 分別是 禁止縮放, 寬度 400, 高度 600 121 """ 122 Config.set('graphics', 'resizable', False) 123 Config.set('graphics', 'width', 400) 124 Config.set('graphics', 'height', 600) 125 126 def setup_ui(self): 127 """ 128 程序窗口必須有一個 layout(佈局), 全部的按鈕/文本框之類的東西都必須添加在佈局中 129 咱們把 按鈕 文本框 這類的東西叫作 控件 130 咱們這裏用了 boxlayout, 先無論, 用起來 131 orientation='vertical' 表示這個 layout 裏面的東西是豎直排列的 132 豎直排列的狀況下, 一個控件默認是橫向填滿, 平分高度 133 這個例子中咱們添加了 2 個文本框, 因此他們每一個佔據一半的高度 134 """ 135 layout = BoxLayout(orientation='vertical') 136 # textinput 是文本輸入框, multiline=False 表示這是一個單行文本框 137 input = TextInput(multiline=False) 138 # 給 input 綁定一個事件 on_text_validate 139 # 這個事件是在按回車的時候觸發的, 也就是說你按回車的時候 self.check 函數會被調用 140 input.bind(on_text_validate=self.check) 141 layout.add_widget(input) 142 # 143 result = TextInput() 144 # kivy 默認不支持中文字符顯示, 必須手動指定包含中文的字體文件才能夠顯示中文 145 # 由於 mac 和 win 的字體文件不一樣, 因此咱們用一個函數來判斷具體使用哪一個字體文件 146 result.font_name = font_name() 147 layout.add_widget(result) 148 # 把 result 這個輸入框用類的屬性存起來以後要使用 149 # 類屬性在類的任何函數中均可以建立, 並不必定要在 __init__ 中建立 150 self.result = result 151 # 152 return layout 153 154 def check(self, input): 155 """ 156 input 就是觸發回車的輸入框控件 157 """ 158 # input.text 能夠獲取這個輸入框中輸入的文本 159 print('check, ', input.text) 160 s = translate(input.text) 161 # 咱們在這裏能夠設置 result 輸入框的文本 162 self.result.text = s 163 164 165 def main(): 166 # 生成 App 並運行 167 TestApp().run() 168 169 170 if __name__ == '__main__': 171 main()