python界面 | Tkinter圖形界面開發(fā)庫

0 寫在前面

未經(jīng)允許,不得轉(zhuǎn)載,謝謝~~

畢設(shè)要在現(xiàn)有的基礎(chǔ)上做一個(gè)可視化的界面,所以趁機(jī)也學(xué)習(xí)一波如何用python實(shí)現(xiàn)圖形界面的開發(fā)。

本文主要學(xué)習(xí)并整理了:

  • 簡要介紹用于python圖形界面開發(fā)的第三方庫
  • 如何利用Tkinter實(shí)現(xiàn)第一個(gè)GUI程序
  • 常見的Tkinter組件,以及控件屬性等等

1 第三方庫及Tkinter介紹

第三方庫介紹
python支持多種圖形界面的第三方庫,包括:TK, wxWidgets, Qt, GTK...

在這些第三方庫中,TK是python自帶支持的,不需要安裝額外的開發(fā)軟件,考慮到任務(wù)比較簡單,就打算選擇Tkinter進(jìn)行開發(fā)。

關(guān)于TK以及Tkinter

  • Tk是一個(gè)圖形庫,支持多個(gè)操作系統(tǒng),使用Tcl語言開發(fā);
  • Tk會調(diào)用操作系統(tǒng)提供的本地GUI接口,完成最終的GUI。
  • Python自帶的Tkinter封裝了Tk的接口
  • 我們只需要調(diào)用Tkinter提供的接口就可以了。

2 第一個(gè)GUI程序

  1. 導(dǎo)入Tkinter的包
    from Tkinter import *

  2. Frame中派生一個(gè)類,這是所有Widget的父容器

class Application(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

    def createWidgets(self):
        self.helloLabel = Label(self, text='Hello, world!')
        self.helloLabel.pack()
        self.quitButton = Button(self, text='Quit', command=self.quit)
        self.quitButton.pack()
  • 在GUI中,每個(gè)Button、Label、輸入框等,都是一個(gè)Widget
  • Frame則是可以容納其他Widget的Widget
  • pack()方法把Widget加入到父容器中,并實(shí)現(xiàn)布局。
  • grid()可以實(shí)現(xiàn)更復(fù)雜的布局。
  • createWidgets()方法中,我們創(chuàng)建一個(gè)Label和一個(gè)Button,當(dāng)Button被點(diǎn)擊時(shí),觸發(fā)self.quit()使程序退出。
  1. 實(shí)例化Application,并啟動消息循環(huán)
app = Application()
# 設(shè)置窗口標(biāo)題:
app.master.title('Hello World')
# 主消息循環(huán):
app.mainloop()
  • GUI程序的主線程負(fù)責(zé)監(jiān)聽來自操作系統(tǒng)的消息,并依次處理每一條消息。
  • 如果消息處理非常耗時(shí),就需要在新線程中處理。
  1. 運(yùn)行結(jié)果


    result

以上展示的就是這一段小代碼運(yùn)行的結(jié)果了。

可以看到TK本身調(diào)用的就是系統(tǒng)的窗口,你的本地窗口什么樣子它就什么樣子,可以說是非常耿直了。

寄期望于后面能學(xué)習(xí)到有background這樣的控件屬性,給我一點(diǎn)可以挽回顏值的余地。

3 Tkinter組件

之前我們提到過像按鈕、文本框這樣的都稱為Widget,其實(shí)就是控件,也可以稱之為組件,反正都是一個(gè)意思。

根據(jù)菜鳥教程中整理的有以下15種控件:

控件 描述
Button 按鈕控件;在程序中顯示按鈕
Canvas 畫布控件;顯示圖形元素如線條或文本
Checkbutton 多選框控件;用于在程序中提供多項(xiàng)選擇框
Entry 輸入控件;用于顯示簡單的文本內(nèi)容
Frame 框架控件;在屏幕上顯示一個(gè)矩形區(qū)域,多用來作為容器
Label 標(biāo)簽控件;可以顯示文本和位圖
Listbox 列表框控件;在Listbox窗口小部件是用來顯示一個(gè)字符串列表給用戶
Menubutton 菜單按鈕控件,用于顯示菜單項(xiàng)。
Menu 菜單控件;顯示菜單欄,下拉菜單和彈出菜單
Message 消息控件;用來顯示多行文本,與label比較類似
Radiobutton 單選按鈕控件;顯示一個(gè)單選的按鈕狀態(tài)
Scale 范圍控件;顯示一個(gè)數(shù)值刻度,為輸出限定范圍的數(shù)字區(qū)間
Scrollbar 滾動條控件,當(dāng)內(nèi)容超過可視化區(qū)域時(shí)使用,如列表框。 .
Text 文本控件;用于顯示多行文本
Toplevel 容器控件;用來提供一個(gè)單獨(dú)的對話框,和Frame比較類似
Spinbox 輸入控件;與Entry類似,但是可以指定輸入范圍值
PanedWindow 一個(gè)窗口布局管理的插件,可以包含一個(gè)或者多個(gè)子控件。
LabelFrame 一個(gè)簡單的容器控件。常用于復(fù)雜的窗口布局。
tkMessageBox 用于顯示你應(yīng)用程序的消息框。

4 Tkinter標(biāo)準(zhǔn)屬性

  • 屬性的意思就是控件的一個(gè)特性,比如大小、字體這些都屬于控件的屬性。
  • 標(biāo)準(zhǔn)屬性也就是所有控件都擁有的共同屬性,如大小、字體和顏色等等。
屬性 描述
Dimension 控件大小;
Color 控件顏色;
Font 控件字體;
Anchor 錨點(diǎn);
Relief 控件樣式;
Bitmap 位圖;
Cursor 光標(biāo);

5 幾何管理

Tkinter控件有特定的幾何狀態(tài)管理方法,管理整個(gè)控件區(qū)域組織,以下是Tkinter公開的幾何管理類:包、網(wǎng)格、位置

幾何方法 描述
pack() 包裝;
grid() 網(wǎng)格;
place() 位置;

最基本的入門知識和常用的控件及控件屬性都在上面啦,碰到具體問題的時(shí)候再一點(diǎn)點(diǎn)實(shí)現(xiàn)就可以了。

后面應(yīng)該會再寫一篇具體界面的實(shí)現(xiàn)代碼,有興趣的話可以跟進(jìn)一下哦~~

參考文獻(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容