<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>

          #Tkinter# Python GUI庫(kù)

          共 7416字,需瀏覽 15分鐘

           ·

          2023-07-01 03:29

          ?文章所涉及內(nèi)容更多來(lái)自網(wǎng)絡(luò),在此聲明,并感謝知識(shí)的貢獻(xiàn)者!

          tkinter簡(jiǎn)介

          tkinter簡(jiǎn)介
          tkinter(Tk interface)是Python的標(biāo)準(zhǔn)GUl庫(kù),支持跨平臺(tái)的GUl程序開(kāi)發(fā)。tkinter適合小型的GUl程序編寫(xiě),也特別適合初學(xué)者學(xué)習(xí)GUl編程。

          tkinter官網(wǎng)

          tkinter官網(wǎng)
          https://docs.python.org/3/library/tkinter.html
          ttk 子模塊的官方文檔:
          https://docs.python.org/3.7/library/tkinter.ttk.html

          tkinter布局

          tkinter布局
          Tkinter 提供了布局功能,主要包含 pack、grid 和 place 三種布局方法。
          pack 布局 方位布局
          ?

          9c22625b561558dc4acbc426cafa2df8.webp

          9b41fe568ceeefd9469aee6821cd3f82.webp

          ba8c318c740ef3cfd6080fa19dc6be55.webp

          Grid布局 網(wǎng)格布局
          grid 布局法就是將屏幕切成表格的樣子,通過(guò)橫向坐標(biāo) row 和縱向坐標(biāo) column 來(lái)指定元素的位置。第一行標(biāo)記為 0,第一列也標(biāo)記為 0。

          1e9f56fe472a50387d293bce49c2d3f3.webp

          a34735a2c50ff2b7234dbcda6c8b23ef.webp

          18bf7efe0edcc53d0ba3851923c92229.webp

          ?Place布局 坐標(biāo)布局

          直接指定元素在父元素中的坐標(biāo)值,單位是像素。

          4931fee625a2605d9b04b2f0491865fe.webp

          d7c180c46f2e0717d6165911ffc3d232.webp

          tkinter組件


          Tkiner 組件
          tkinter的組件包含以下幾種
          按鈕組件
          Button?????????? 按鈕組件
          RadioButton??
          ??? 單選框組件
          CheckButton????? 選擇按鈕組件
          Listbox????????? 列表框組件
          tkinter.Button(用于存放的父組件,屬性參數(shù)...)
          屬性:
          anchor???????????? 設(shè)置按鈕中文字的對(duì)其方式,相對(duì)于按鈕的中心位置
          background(bg)???? 設(shè)置按鈕的背景顏色
          foreground(fg)???? 設(shè)置按鈕的前景色(文字的顏色)
          borderwidth(bd)??? 設(shè)置按鈕邊框?qū)挾?br />cursor???????????? 設(shè)置鼠標(biāo)在按鈕上的樣式
          command??????????? 設(shè)定按鈕點(diǎn)擊時(shí)觸發(fā)的函數(shù)
          bitmap???????????? 設(shè)置按鈕上顯示的位圖
          font?????????????? 設(shè)置按鈕上文本的字體
          width????????????? 設(shè)置按鈕的寬度? (字符個(gè)數(shù))
          height???????????? 設(shè)置按鈕的高度? (字符個(gè)數(shù))
          state????????????? 設(shè)置按鈕的狀態(tài)
          text?????????????? 設(shè)置按鈕上的文字
          image????????????? 設(shè)置按鈕上的圖片

          文本輸入框組件
          Entry??????????? 單行文本框組件
          Text???????????? 多行文本框組件
          #單行文本
          tkinter.Entry(用于存放的父組件,屬性參數(shù)...)
          #多行文本
          tkinter.Text(用于存放的父組件,屬性參數(shù)...)
          屬性:
          background(bg)??????? 設(shè)置文本框的背景色
          foreground(bg)??????? 設(shè)置文本框的前景色
          borderwidth(bd)?????? 設(shè)置文本輸入框的邊框
          font????????????????? 設(shè)置文本框中的字體
          width???????????????? 設(shè)置文本框的寬度(字符個(gè)數(shù))
          height??????????????? 設(shè)置文本框的高度(字符個(gè)數(shù)),僅限于text
          state???????????????? 設(shè)置文本框的狀態(tài)
          selectbackground????? 選中文字時(shí)文本框的背景色
          selectforeground????? 選中文字時(shí)文字的顏色
          show????????????????? 指定文本框顯示的字符,若為*,則表示為密碼框
          textvariable ???????? 設(shè)置文本對(duì)應(yīng)的變量,可以通過(guò)修改變量改變文字顯示。必須使用tkinter.IntVar() 或 tkinter.StringVar()產(chǎn)生的變量? entry可以使用

          標(biāo)簽組件
          Label??????????? 標(biāo)簽組件,可以顯示圖片和文字
          Message????????? 標(biāo)簽組件,可以根據(jù)內(nèi)容將文字換行
          tkinter.Label(用于存放的父組件,屬性參數(shù)...)
          屬性
          anchor??????????????? 設(shè)置文本相對(duì)于標(biāo)簽中心的位置
          background??????????? 設(shè)置標(biāo)簽的背景色
          foreground??????????? 設(shè)置標(biāo)簽的前景色
          borderwidth?????????? 設(shè)置標(biāo)簽的邊框?qū)挾?br />width???????????????? 設(shè)置標(biāo)簽的寬度(字符個(gè)數(shù))
          height??????????????? 設(shè)置標(biāo)簽的高度(字符個(gè)數(shù))
          text????????????????? 設(shè)置標(biāo)簽中文本內(nèi)容
          font????????????????? 設(shè)置標(biāo)簽中文字的字體類型
          bitmap??????????????? 設(shè)置標(biāo)簽的現(xiàn)實(shí)的位圖
          image???????????????? 設(shè)置標(biāo)簽中顯示的圖片
          justify?????????????? 是設(shè)置標(biāo)簽中多行文本的對(duì)其方式
          textvariable????????? 設(shè)置文本對(duì)應(yīng)的變量,可以通過(guò)修改變量改變文字顯示,必須使用tkinter.IntVar() 或者tkinter.StringVar()產(chǎn)生的變量

          復(fù)合組件
          thinter.Radiobutton(用于存放的父組件,屬性參數(shù)...)
          thinter.Checkbutton(用于存放的父組件,屬性參數(shù)...)
          屬性
          anchor???????????? 設(shè)置組件中文字的對(duì)其方式
          background(bg)???? 指定組件的背景色。?  
          borderwidth(bd)??? 指定組件邊框的寬度。?  
          bitmap ??????????? 指定組件中的位圖。?  
          font ????????????? 指定組件中文本的字體。?  
          foreground(fg)???? 指定組件的前
          height ??????????? 指定組件的高度。?  
          image ???????????? 指定組件中的圖片。?  
          justify ?????????? 指定組件中多行文本的對(duì)齊方式。?  
          text ????????????? 指定組件中的文本,可以 使用“\ n” 表示換行。?  
          value????????????? 指定組件被選中后(單選框)
          onvalue??????????? 組件勾選狀態(tài)值(復(fù)選框)
          offvalue?????????? 組件取消勾選狀態(tài)的值(復(fù)選框)
          variable ????????? 指定組件所關(guān)聯(lián)的變量。需要使用tkinter. IntVar()或者tkinter. StringVar()創(chuàng)建的值
          width ???????????? 指定組件的寬度。
          command??????????? 設(shè)置復(fù)選框操作的觸發(fā)命令(復(fù)選框)

          菜單組件
          Menu???????????? 菜單組件
          MenuButton?????? 菜單按鈕組件,可以使用Menu代替
          thinter.Menu(用于存放的父組件,屬性參數(shù)...)
          background(bg)????????? 正常的背景顏色顯示在標(biāo)簽和指示器后面。
          borderwidth(bd)???????? 指標(biāo)周?chē)吔绲拇笮 DJ(rèn)值為2像素。
          cursor ???????????????? 如果將此選項(xiàng)設(shè)置為光標(biāo)名稱(箭頭,點(diǎn)等),則鼠標(biāo)光標(biāo)將在檢查按鈕上方更改為該模式。
          height ???????????????? 新框架的垂直尺寸。
          highlightbackground ??? 當(dāng)框架沒(méi)有焦點(diǎn)時(shí),焦點(diǎn)的顏色突出顯示。
          highlightcolor ???????? 當(dāng)框架具有焦點(diǎn)時(shí),焦點(diǎn)突出顯示的顏色。
          highlightthickness ???? 焦點(diǎn)亮點(diǎn)的厚度。
          relief ???????????????? 使用默認(rèn)值,relief = FLAT,檢查按鈕不會(huì)從背景中脫穎而出。您可以將此選項(xiàng)設(shè)置為任何其他樣式
          width ????????????????? checkbutton的默認(rèn)寬度取決于所顯示的圖像或文字的大小。你可以設(shè)置此選項(xiàng)的字符數(shù)和checkbutton的,總是有許多字符的空間。

          滾動(dòng)條組件
          scale??????????? 滑塊組件
          Scrollbar??????? 滾動(dòng)條組件

          其他組件
          Canvas?????????? 畫(huà)布組件
          Frame??????????? 框架組件,將多個(gè)組件編組
          Toplevel???????? 創(chuàng)建子窗口容器組件

          tkinter事件

          Tkinter事件
          鼠標(biāo)事件類型
          <Button-1>????????? 按下了鼠標(biāo)左鍵??????? <ButtonPress-1>
          <Button-2>????????? 按下了鼠標(biāo)中鍵??????? <ButtonPress-2>
          <Button-3>????????? 按下了鼠標(biāo)右鍵??????? <ButtonPress-3>
          <Enter>???????????? 鼠標(biāo)進(jìn)入組件區(qū)域
          <Leave>???????????? 鼠標(biāo)離開(kāi)組件區(qū)域
          <ButtonRelease-1>?? 釋放了鼠標(biāo)左鍵
          <ButtonRelease-2>?? 釋放了鼠標(biāo)中鍵
          <ButtonRelease-3>?? 釋放了鼠標(biāo)右鍵
          <B1-Moion>????????? 按住鼠標(biāo)左鍵移動(dòng)
          <B2-Moion>????????? 按住鼠標(biāo)中鍵移動(dòng)
          <B3-Moion>????????? 按住鼠標(biāo)右鍵移動(dòng)
          <Double-Button-1>?? 雙擊鼠標(biāo)左鍵
          <Double-Button-2>?? 雙擊鼠標(biāo)中鍵
          <Double-Button-3>?? 雙擊鼠標(biāo)右鍵
          <MouseWheel>??????? 滾動(dòng)鼠標(biāo)滾輪

          鍵盤(pán)事件類型
          <KeyPress>???????????????? 表示任何鍵盤(pán)按下
          <KeyPress-A>?????????????? 表示按下鍵盤(pán)A鍵??? A可以設(shè)置為其他的按鍵
          <Alt-KeyPress-A>?????????? 表示同時(shí)按下Alt和A鍵??? A可以設(shè)置為其他的按鍵
          <Control-KeyPress-A>?????? 表示同時(shí)按下Ctrl和A鍵??? A可以設(shè)置為其他的按鍵
          <Shift-KeyPress-A>???????? 表示同時(shí)按下Shift和A鍵??? A可以設(shè)置為其他的按鍵
          <Double-KeyPress-A>??????? 表示雙擊鍵盤(pán)A鍵??? A可以設(shè)置為其他的按鍵
          <Lock-KeyPress-A>????????? 表示開(kāi)啟大寫(xiě)之后鍵盤(pán)A鍵??? A可以設(shè)置為其他的按鍵
          <Alt-Control-KeyPress-A>?? 表示同時(shí)按下alt+Ctrl和A鍵??? A可以設(shè)置為其他的按鍵
          注意:鍵盤(pán)事件除了entry和text組件其他組件的事件最好綁定在主界面上

          事件對(duì)象中包含的信息
          x,y????????????? 當(dāng)前觸發(fā)事件時(shí)鼠標(biāo)相對(duì)觸發(fā)事件的組件的坐標(biāo)值
          x_root,y_root??? 當(dāng)前觸發(fā)事件時(shí)鼠標(biāo)相對(duì)于屏幕的坐標(biāo)值
          char???????????? 獲取當(dāng)前鍵盤(pán)事件時(shí)按下的鍵對(duì)應(yīng)的字符
          keycode????????? 獲取當(dāng)前鍵盤(pán)事件時(shí)按下的鍵對(duì)應(yīng)的的ascii碼
          type???????????? 獲取事件的類型
          num????????????? 獲取鼠標(biāo)按鍵類型? 123 左中右
          widget?????????? 觸發(fā)事件的組件
          width/height???? 組件改變之后的大小和configure()相關(guān)

          窗口和組件相關(guān)事件類型
          Activate???????? 當(dāng)中組件由不可以用變?yōu)榭捎脮r(shí)? 針對(duì)于state的變值
          Deactivate?????? 當(dāng)組件由可用變?yōu)椴豢捎脮r(shí)觸發(fā)
          Configure??????? 當(dāng)組件大小發(fā)生變化時(shí)觸發(fā)
          Destory????????? 當(dāng)組件銷毀時(shí)觸發(fā)
          FocusIn????????? 當(dāng)組件獲取焦點(diǎn)時(shí)觸發(fā) 針對(duì)于Entry和Text有效
          Map????????????? 當(dāng)組件由隱藏變?yōu)轱@示時(shí)觸發(fā)
          UnMap??????????? 當(dāng)組件由顯示變?yōu)殡[藏時(shí)觸發(fā)
          Perproty???????? 當(dāng)窗口屬性發(fā)生變化時(shí)觸發(fā)


          事件綁定函數(shù)
          組件.bind(‘事件類型’,事件函數(shù))
          為一個(gè)組件綁定一個(gè)操作

          組件.bind_class(‘組件類型’,‘事件類型’,事件函數(shù))
          為一類組件綁定一個(gè)操作
          組件類型就是創(chuàng)建組件的方法名? 例如按鈕組件:Button

          組件.bind_all(‘事件類型’,事件函數(shù))
          為所有組件綁定一個(gè)操作(所有操作都會(huì)當(dāng)作對(duì)主界面的操作)

          tkinter模塊

          Tkinter模塊
          提供 Tk 支持的模塊包括:
          tkinter
          主 Tkinter 模塊。
          tkinter.colorchooser
          讓用戶選擇顏色的對(duì)話框。
          tkinter.commondialog
          本文其他模塊定義的對(duì)話框的基類。
          tkinter.filedialog
          允許用戶指定文件的通用對(duì)話框,用于打開(kāi)或保存文件。
          tkinter.font
          幫助操作字體的工具。
          tkinter.messagebox
          訪問(wèn)標(biāo)準(zhǔn)的 Tk 對(duì)話框。
          tkinter.scrolledtext
          內(nèi)置縱向滾動(dòng)條的文本組件。
          tkinter.simpledialog
          基礎(chǔ)對(duì)話框和一些便捷功能。
          tkinter.ttk
          在 Tk 8.5 中引入的帶主題的控件集,提供了對(duì)應(yīng)于 tkinter 模塊中許多經(jīng)典控件的現(xiàn)代替代。
          附加模塊:
          _tkinter
          一個(gè)包含低層級(jí) Tcl/Tk 接口的二進(jìn)制模塊。它會(huì)被主 tkinter 模塊自動(dòng)導(dǎo)入,且永遠(yuǎn)不應(yīng)被應(yīng)用程序員所直接使用。它通常是一個(gè)共享庫(kù)(或 DLL),但在某些情況下可能被動(dòng)態(tài)鏈接到 Python 解釋器。
          idlelib
          Python 的集成開(kāi)發(fā)與學(xué)習(xí)環(huán)境(IDLE)。基于 tkinter。
          tkinter.constants
          當(dāng)向 Tkinter 調(diào)用傳入各種形參時(shí)可被用來(lái)代替字符串的符號(hào)常量。由主 tkinter 模塊自動(dòng)導(dǎo)入。
          tkinter.dnd
          針對(duì) tkinter 的(實(shí)驗(yàn)性的)拖放支持。當(dāng)以 Tk DND 代替時(shí)它將會(huì)被棄用。
          tkinter.tix
          (已棄用)一個(gè)增加了部分新控件的較老的第三方 Tcl/Tk 包。對(duì)多數(shù)人來(lái)說(shuō)可以在 tkinter.ttk 中找到更好的替代品。
          turtle
          Tk 窗口中的海龜繪圖庫(kù)。

          tkinter案例

          tkinter案例
          創(chuàng)建一個(gè)窗口
          from tkinter import *
          root = Tk()? # 實(shí)例化TK
          root.mainloop()? # 進(jìn)入事件循環(huán)


          5e0e5fdca68348478d4badcd4a0de030.webp


          創(chuàng)建帶事件響應(yīng)的按鈕
          from tkinter import *
          from tkinter import messagebox

          root = Tk()
          bt = Button(root)
          bt['text'] = '點(diǎn)我'
          bt.pack()
          def dianji(e):
          ??? messagebox.showinfo('message', 'give flower')? # 提示框
          bt.bind('<Button-1>', dianji)? # 綁定點(diǎn)擊事件
          root.mainloop()? # 進(jìn)入事件循環(huán)


          14665670c01eb87ac7dec7e867b76fbd.webp


          創(chuàng)建指定長(zhǎng)寬高的窗口


          fb3c7a1e3bcb5026f544bcea5893ea77.webp

          ?from tkinter import *
          from tkinter import messagebox

          root = Tk()
          root.title('我的gui程序')
          root.geometry('500x300+100+200')
          # 500寬度? 300高度?? 距屏幕左側(cè)100像素 頂部200像素
          bt = Button(root)
          bt['text'] = '點(diǎn)我'
          bt.pack()
          def dianji(e):
          ??? print(e)
          ??? messagebox.showinfo('message', 'give flower')? # 提示框
          bt.bind('<Button-1>', dianji)? # 綁定點(diǎn)擊事件
          root.mainloop()? # 進(jìn)入事件循環(huán)
          創(chuàng)建一個(gè)居中顯示的窗口
          ?
          from tkinter import *
          app = Tk()
          app.title('拜液用戶管理')

          sw = app.winfo_screenwidth()
          # 得到屏幕寬度
          sh = app.winfo_screenheight()

          # 得到屏幕高度
          ww = 610
          wh = 400

          x = (sw - ww) / 2
          y = (sh - wh) / 2
          app.geometry("%dx%d+%d+%d" % (ww, wh, x, y))

          app.resizable(width=False, height=False)
          app.mainloop()

          參考資料

          參考資料:
          https://blog.csdn.net/qq_60087163/article/details/129172486
          https://blog.csdn.net/weixin_44634704/article/details/122571178
          https://www.runoob.com/python/python-gui-tkinter.html
          https://docs.python.org/zh-cn/3/library/tkinter.html
          https://cloud.tencent.com/developer/article/2192326?areaSource=102001.14&traceId=nNG2EeN5txJPaCgbnzQ5p
          http://www.imyhq.com/game/1207.html


          瀏覽 54
          點(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>
                  天堂8视频在线 | 久久丫丫 | 音影先锋男人资源站 | 中文字慕一色哟哟 | 日本AAA视频 |