1. 程式人生 > >Tkinter小結 界面+快捷鍵設置

Tkinter小結 界面+快捷鍵設置

詳情 網絡操作 運行 tab wrap UNC 顯示效果 soup inter

    • 前言
    • 基礎知識點
      • 前導篇
      • Button篇
      • Label篇
      • Entry篇
      • 其他控件
      • 事件篇
    • 小應用
    • 總結

前言

之前寫過一個關於Python 使用easyUI創建桌面小應用的博客,雖然easyUI很實用,但是安裝方面確實存在一些小小的問題。那麽好吧,這次就嘗試著使用自帶的Tkinter好了。

另外不得不說的是,Windows環境下寫界面還是用C++或者C#的好,天生自帶優勢,界面也更加美觀。

基礎知識點

下面就一些基礎的空間簡要的描述一下,以及它們的簡單應用。

前導篇

要想寫界面,就得有個載體不是。這就好比說我們要蓋個房子,光有磚頭,瓦塊,木材是肯定不行的。我們還需要一個框架,一個承載這些組件的”平臺”。

在Tkinter中,同樣如此。而且創建這麽一個“框架”也很簡單,如下代碼。

from tkinter import *
# 需要註意的是Python2.X中應該這麽寫
# from Tkinter import *

platform = Tk()
platform.title(‘標題部分‘)
platform.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

運行一下,結果圖如下
技術分享圖片

Button篇

按鈕對於一個桌面應用來說是最最常見,也必不可少的一塊“磚頭”了。但是在寫界面的時候,我們沒有見過單獨一個按鈕就可以跑起來的吧。就好比磚頭需要蓋在房子裏。所以button需要依附於一個框架,也就是剛才的platform。

源碼中是這樣解釋的。

 """Button widget."""
    def __init__(self, master=None, cnf={}, **kw):
        """Construct a button widget with the parent MASTER.

        STANDARD OPTIONS

            activebackground, activeforeground, anchor,
            background, bitmap, borderwidth, cursor,
            disabledforeground, font, foreground
            highlightbackground, highlightcolor,
            highlightthickness, image, justify,
            padx, pady, relief, repeatdelay,
            repeatinterval, takefocus, text,
            textvariable, underline, wraplength

        WIDGET-SPECIFIC OPTIONS

            command, compound, default, height,
            overrelief, state, width
        """
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

也就是說button需要有一個parent控件。那麽下面我們來看下代碼。


from tkinter import *

platform = Tk()
platform.title(‘標題部分‘)
Button(platform, text=‘我是一個按鈕‘).pack()
platform.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

如下
技術分享圖片

需要註意的是Button(platform, text=‘我是一個按鈕‘).pack()這行代碼的pack方法,其作用是將按鈕“夯”進platform,讓它能顯示出來。不然的話,磚頭始終是磚頭,成不了房子的一部分。如果沒有這個方法的話,組件是不會顯示的。pack方法可以傳入slide參數來指定其靠齊方式。如side=LEFT啥的。

button組件除了
- text(按鈕上顯示的文本)
- width(寬度)
- height(按鈕的高度)
- compound(依附方位)

等之外。還有一個比較重要的屬性,那就是command。這就是響應按鈕被點擊的時候的回調函數。說白了就是 點擊按鈕之後會觸發什麽響應事件。下面我們來看個小小的例子。
技術分享圖片

這樣就可以啦。也許你會想,為啥callback沒有參數啊,我想在點擊按鈕的時候傳一個參數來改變一些行為怎麽辦呢?
關於這塊,我也查看了一下官方文檔,發現確實沒有相關的api可以被直接的調用。但是有下面這種間接的方式實現。


from tkinter import *

def callback():
    global button
    print(‘按鈕被點擊了!‘)
    # 動態修改按鈕的屬性
    button[‘text‘] = ‘修改後的按鈕文本‘
    button[‘width‘]=28
    button[‘height‘] = 16
    button[‘compound‘] = ‘center‘
    # 甚至還可以動態修改按鈕綁定的回調處理函數
    button[‘command‘] = callback2

def callback2():
    print(‘動態修改按鈕的回調函數!‘)


platform = Tk()
platform.title(‘標題部分‘)
button = Button(platform, text=‘我是一個按鈕‘, command=callback)
button.pack()
platform.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

結果如下
技術分享圖片

Label篇