<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          你要的 Python 創(chuàng)建 GUI 用戶界面程序,來(lái)咯

          共 1752字,需瀏覽 4分鐘

           ·

          2020-05-13 23:23




          時(shí)不時(shí)就有 b 友讓我整點(diǎn)
          “Python GUI 相關(guān)的教程”

          今天小帥b就來(lái)給你說(shuō)道說(shuō)道


          30f9fdefd18b5f2b854ca26b2e6c00e2.webp


          用 Python 來(lái)寫(xiě) GUI 的庫(kù)有好幾個(gè)
          比如?pyqt、wxpython、tkinter、kivy


          相對(duì)來(lái)說(shuō)比較常用的是 tkinter它是 Python 內(nèi)置的庫(kù)用起來(lái)比較 “直接了當(dāng)”

          是這樣的
          TK 是一個(gè)開(kāi)源的開(kāi)發(fā)工具包里面提供了很多界面組件的接口比如按鈕、選項(xiàng)框、輸入框這些


          而且這些組件是跨平臺(tái)的在不同的操作系統(tǒng)中都可以運(yùn)行比如你常見(jiàn)的 MacOS,Linux,Windows



          e39929eb83b104b9cd36dc17e031df31.webp



          既然如此
          Python 就把這些接口調(diào)起來(lái)封裝成函數(shù)和類然后整成?tkinter 模塊


          這樣當(dāng)我們想要寫(xiě) GUI 的時(shí)候直接使用?Python 調(diào)用 tkinter 就好了



          1c6285545f4695806b0f76046bfe3e96.webp


          在你的終端里面輸入“python -m tkinter”



          bce28fe0758e4108f4ff0d602a0a43fc.webp




          出現(xiàn)類似的窗口說(shuō)明你的 tkinter 和 tk?都給安裝上了


          那么如何玩 tkinter 呢

          接下來(lái)就是學(xué)習(xí) Python 的正確姿勢(shì)

          2b1d93dc787d7b26b60662d3c9676444.webp




          組件的使用

          我先把一些常用的組件操作給你介紹一下

          首先我們導(dǎo)入 tkinter
          然后調(diào)用 Tk 方法


          8986e83f11885714b325cdbe697255c6.webp




          運(yùn)行就可以得到一個(gè)窗口


          812cde9374622f6875bda0f5f35aa8f1.webp




          樣式與你的系統(tǒng)類型相關(guān)

          其中我們調(diào)用了 mainloop 方法
          主要是讓它去循環(huán)等待用戶的交互

          定義窗口的標(biāo)題


          a4e8108c86c9b2b60b9a3f67cfe93392.webp





          窗口的高寬是根據(jù)組件的大小相對(duì)而定的

          這樣能在不同的系統(tǒng)中比較好的運(yùn)行

          當(dāng)然,你也可以
          使用 geometry自己指定窗口的寬高


          f51eed4aa2dd2578a7919656f2918565.webp





          tkinter 把不同的組件
          都封裝成了 Class

          比如想要往里加入文本
          就可以使用 Label 對(duì)象


          9f8b76dc90ff73bfdec47478eacd89e6.webp




          這里創(chuàng)建了一個(gè) Label 小組件
          然后用 pack 塞到窗口中去

          每個(gè)組件都有一些屬性可以設(shè)置
          比如這里可以設(shè)置常用的寬高字體顏色



          3be8e3ba5d85427a59239ffd841044fb.webp





          加個(gè)騷騷的按鈕



          a1391e9eaf6bcb14838dd2b4bb34b491.webp






          124b9d82e99c33da3d7e88f88bb2a67f.webp


          按鈕可以定義點(diǎn)擊事件

          比如你想當(dāng)點(diǎn)擊按鈕的時(shí)候調(diào)用方法來(lái)修改 Lable 里面的內(nèi)容

          可以使用 command 來(lái)綁定回調(diào)函數(shù)


          ea292c52cbfdc8b7bac3e3d4771e2680.webp





          運(yùn)行一波



          4ac7934e16720e89f3963b0473188043.webp




          添加文本輸入框可以使用 Entry 對(duì)象



          acc961736c2124aecf5c7bf048d75dd4.webp




          可以通過(guò)?entry 的 get 方法
          獲取輸入的值

          比如我們要讓用戶輸入名稱然后點(diǎn)擊按鈕把文字變成“xxx,你被綠了”就可以這樣


          fcc69185b31782a281e91afafeba7461.webp




          這里主要是將輸入的內(nèi)容
          作為 name 參數(shù)傳給?change_label 方法


          498f46ea2b5dbd5f946bd7056065aa75.webp





          其它需要點(diǎn)擊的組件使用方式和 Button?差不多


          添加單選
          RadioButton



          b8b74fc296021ac37cbf8827c20d11af.webp




          添加下拉選擇框
          使用 Combbox這個(gè)需要導(dǎo)入 ttk


          0bc19c7ba5def033a58c881f9787501f.webp




          2350cd594b31c9be9f9ff125e52d30c4.webp




          多選框
          CheckButton



          7d55613e6a8ea5eaafdfb47e82c598e4.webp




          彈窗messagebox

          讓它點(diǎn)擊按鈕的時(shí)候彈窗可以這樣


          2a3ce065f5a12be285cbdc6223940720.webp




          81cbad00bf1bf80362e24b6bd9a1d466.webp




          除了 showinfo 之外show 警告和錯(cuò)誤

          8d31035212a215e61c36619e628d15bd.webp




          比如顯示警告



          ec8b8f57ca82ef0b838708b7a5d56247.webp





          還可以用疑問(wèn)的方式展示


          8ae307584d29af4007b3aac7cfcd6ac8.webp




          比如 askquestion


          99edd472e6f72d181cfa4e5ecb3a11fe.webp




          長(zhǎng)文本Text

          8dd0f7db43eb377a01fc47a68d7ad183.webp




          獲取 Text 的內(nèi)容


          91aa287c45404f18fe62c945b37a5c17.webp




          其中 get 可以傳入兩參數(shù)一個(gè)是想要獲取的行數(shù)
          一個(gè)是想要獲取該行中的位置
          使用 tk.END?可以獲取全部


          組件的布局



          剛剛的布局有點(diǎn)亂可以在組件 pack 的時(shí)候設(shè)置參數(shù)來(lái)控制組件的位置


          3b5d03ea208c1de57f0e148755f9c5ac.webp




          這里用 side 指定位置padx 來(lái)指定邊距
          一般來(lái)說(shuō)窗口如果有多個(gè)組件
          會(huì)先定義 Frame 來(lái)先布局
          Frame 也是一個(gè)組件
          它可以填充其它組件進(jìn)來(lái)

          比如我們可以把剛剛的窗口


          98adae7d27196096cb6c0cce1bee4c19.webp




          分成 5 個(gè) Frame


          f864244f7081099138e818dc1f3d9f73.webp




          這里將不同的組件填充到相應(yīng)的 Frame 中每個(gè) Frame 設(shè)置的間隔為?5



          d63a22ca65c953688800e723fcac8530.webp





          另一種比較常用的布局方式是使用?grid()
          你可以把窗口看成是一個(gè)多行多列的表格

          比如我們想把剛剛窗口的 5?個(gè) Frame
          劃分成

          f4
          f2
          f1
          f3
          f5



          那么就可以這樣



          1190e7686fdeefeb233f218ea990d3d7.webp




          通過(guò) grid 去指定 frame 的
          具體在第幾行第幾列
          其中 sticky 可以控制
          組件的對(duì)其方向pad 控制間距


          你還可以通過(guò)
          rowconfigure 和?columnconfigure來(lái)控制單元格之間的大小


          238e091c42ee352cab3d7706abfad332.webp




          一種更好的方式可以用面向?qū)ο蟮姆绞?/span>來(lái)使用 tkinter 寫(xiě) GUI

          像以下這樣在類方法中定義組件和事件


          0991bf50f119189d6612b7f674d5d601.webp



          ok,以上
          你可以自己去寫(xiě)點(diǎn)界面玩玩

          當(dāng)然了我在這里只是介紹一些常用組件的使用
          大多組件的使用方式都差不多


          更多的組件和使用細(xì)節(jié)可以參考https://docs.python.org/3/library/tk.html

          哦對(duì)了
          之前在 VIP 簡(jiǎn)單寫(xiě)了下聊天室的實(shí)現(xiàn)用的也是 tkinter


          dd57127b983af5616ed6c53d34c77705.webp




          感興趣可以在閱讀原文中了解

          那么,我們下回見(jiàn)peace



          5099ad0a499bacfde793aa3c5c875d6c.webp


          太愛(ài)我的話就加我微信

          備注【讀者】即可通過(guò)









          點(diǎn)亮在看你我同在
          瀏覽 65
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲第一免费视频 | 中文电视剧字幕在线播放网站 | 天天干天天舔天天操 | 免费一级片免费 | 九七AV|