摘要:已獲原作者授權(quán)原系列地址下面我們將以中最簡單的控件控件開始這個(gè)系列的教程在中控件用以顯示文字和圖片通常被用來展示信息而非與用戶交互譯者注也可以綁定點(diǎn)擊等事件只是通常不這么用程序員的教程怎么能少了我們尊重這個(gè)傳統(tǒng)但我們不說讓我們來秀出吧下面的
已獲原作者授權(quán). 原系列地址: Python TkinterHello Tkinter Label
下面我們將以 Tkinter 中最簡單的控件: Label 控件, 開始這個(gè)系列的教程. 在 Tkinter 中, Label 控件用以顯示文字和圖片. Label 通常被用來展示信息, 而非與用戶交互. (譯者注: Label 也可以綁定點(diǎn)擊等事件, 只是通常不這么用).
程序員的教程, 怎么能少了 Hello World . 我們尊重這個(gè)傳統(tǒng), 但我們不說 Hello World, 讓我們來秀出 Hello Tkinter 吧.
下面的 Python 腳本用 Tkinter 創(chuàng)建了一個(gè)帶有 "Hello Tkinter" 字樣的窗口. 你可以在 Python 的命令行解釋器中逐行輸入下面的腳本, 也可以將之存入一份文件, 比如 hello.py .
from Tkinter import * # if you are working under Python 3, comment the previous line and comment out the following line #from tkinter import * root = Tk() w = Label(root, text="Hello Tkinter!") w.pack() root.mainloop()運(yùn)行例子
如果你將上述腳本存入文件 hello.py, 那么可以這樣啟動它:
$ python hello.py
如果你在 Linux Gnome 環(huán)境下運(yùn)行上述命令, 會顯示如下窗口:
在 Windows 系統(tǒng)下是這個(gè)樣子:
逐行解釋在 Tkinter 編程中, 一定少不了 Tkinter 中的 Tk 類. 上例中我們通過星號 ( * ) 來將 Tkinter 中的所有模塊引入命名空間.
from Tkinter import *
要初始化一個(gè) Tkinter 程序, 我們需要一個(gè) root 控件, 即根窗口, 它包括標(biāo)題欄和其他一些由本地窗口系統(tǒng)提供的裝飾. root 控件需要在創(chuàng)建其他控件前創(chuàng)建, 并且一個(gè)窗口只能有一個(gè) root 控件.
root = Tk()
這之后的一行代碼, 我們創(chuàng)建了一個(gè) Label 控件. 它的第一個(gè)參數(shù)是其父控件, 在我們這個(gè)例子里就是上面的 root 控件. 因此這個(gè) Label 控件是上面的 root 控件的一個(gè)子控件. 這個(gè) Label 控件的第二個(gè)參數(shù)指示其所要顯示的文字.
w = Label(root, text="Hello Tkinter!")
pack() 方法指示這個(gè) Label 的大小為正好可以包裹其中的文字.
w.pack()
當(dāng)我們啟動了 Tkinter 的消息循環(huán) (event loop) 后, 窗口就會被顯示出來:
root.mainloop()
上面的腳本會一直運(yùn)行在這個(gè)消息隊(duì)列中, 直到這個(gè)窗口被關(guān)閉.
在 Label 中顯示圖片上面我們已經(jīng)提到, Label 既可以顯示文字, 也可以顯示圖片. 下面的例子中我們將創(chuàng)建兩個(gè) Label, 一個(gè)用以顯示文字, 一個(gè)用以顯示圖片:
from Tkinter import * root = Tk() logo = PhotoImage(file="../images/python_logo_small.gif") w1 = Label(root, image=logo).pack(side="right") explanation = """At present, only GIF and PPM/PGM formats are supported, but an interface exists to allow additional image file formats to be added easily.""" w2 = Label(root, justify=LEFT, padx = 10, text=explanation).pack(side="left") root.mainloop()
上面的腳本運(yùn)行后, 在 Ubuntu 下顯示如下:
justify 參數(shù)指示文字的對齊方向, 可選值為 RIGHT, CENTER, LEFT, 默認(rèn)為 Center.
padx 參數(shù)指定水平方向的邊距, 默認(rèn)為1像素.
pady 參數(shù)指定豎直方向的邊距, 默認(rèn)為1像素.
上面的例子中, 如果去掉 justify 和 padx 參數(shù), 那么上面的窗口會顯示為這個(gè)樣子:
想讓文字顯示在圖片上面? 好辦! 我們只需要在一個(gè) Label 控件中同時(shí)使用圖片和文字的相關(guān)選項(xiàng)即可. 默認(rèn)情況下, 如果為一個(gè) Label 控件指定了圖片, 那么這個(gè) Label
就會只顯示圖片. 要讓圖片和文字一同顯示, 就要使用 compound 選項(xiàng). 設(shè)置其為 CENTER 將使文字顯示在圖片上方:
from Tkinter import * root = Tk() logo = PhotoImage(file="../images/python_logo_small.gif") explanation = """At present, only GIF and PPM/PGM formats are supported, but an interface exists to allow additional image file formats to be added easily.""" w = Label(root, compound = CENTER, text=explanation, image=logo).pack(side="right") root.mainloop()
我們可以讓圖片顯示在左側(cè), 文字顯示在右側(cè), 讓文字向左對齊, 并在左右兩側(cè)空出 10 像素的邊距:
w = Label(root, justify=LEFT, compound = LEFT, padx = 10, text=explanation, image=logo).pack(side="right")
設(shè)置 compound 為 BOTTOM, LEFT, RIGHT, TOP, 圖片就會顯示在相應(yīng)的位置上.
顏色和字體諸如 Label, Text, Canvas 等控件, 支持指定字體, 通過 font 屬性設(shè)置即可實(shí)現(xiàn). 需要特別注意的是字體不是平臺獨(dú)立的.
fg (foreground) 屬性可以指定字體的顏色, bg 屬性可以指定控件的背景顏色.
from Tkinter import * root = Tk() Label(root, text="Red Text in Times Font", fg = "red", font = "Times").pack() Label(root, text="Green Text in Helvetica Font", fg = "light green", bg = "dark green", font = "Helvetica 16 bold italic").pack() Label(root, text="Blue Text in Verdana bold", fg = "blue", bg = "yellow", font = "Verdana 10 bold").pack() root.mainloop()
上例腳本運(yùn)行后顯示如下:
改變控件內(nèi)容在下面的例子中, Label 中的文字將被自動加1, 直到按鈕被點(diǎn)擊時(shí)停止計(jì)數(shù):
import Tkinter as tk counter = 0 def counter_label(label): def count(): global counter counter += 1 label.config(text=str(counter)) label.after(1000, count) count() root = tk.Tk() root.title("Counting Seconds") label = tk.Label(root, fg="green") label.pack() counter_label(label) button = tk.Button(root, text="Stop", width=25, command=root.destroy) button.pack() root.mainloop()
上面的腳本運(yùn)行后窗口顯示如下:
全系列:
[譯][Tkinter 教程01] 入門: Label 控件
[譯][Tkinter 教程02] Message 控件
[譯][Tkinter 教程03] Button 控件
[譯][Tkinter 教程04] Variable 類
[譯][Tinkter 教程05] Radiobutton 控件
[譯][Tkinter 教程06] Checkbox 控件
[譯][Tkinter 教程07] Entry 控件
[譯][Tkinter 教程08] Canvas 圖形繪制
[譯][Tkinter 教程09] Scale 控件
[譯][Tkinter 教程10] Text 控件
[譯][Tkinter 教程11] 對話框和消息框
[譯][Tkinter 教程12] 布局管理 (Pack Place Grid)
[譯][Tkinter 教程13] Mastermind 游戲
[譯][Tkinter 教程14] menu 菜單
[譯][Tkinter 教程15] event 事件綁定
譯者水平有限, 如有疏漏, 歡迎指正.
已聯(lián)系原作者授權(quán). 原文地址:?
Saying Hello with Labels
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41488.html
摘要:已獲原作者授權(quán)原系列地址簡介控件是一種標(biāo)準(zhǔn)控件用來展現(xiàn)不同樣式的按鈕控件被用以和用戶交互比如按鈕被鼠標(biāo)點(diǎn)擊后某種操作被啟動和控件類似按鈕可以展示圖片或者文字不同的是控件可以指定字體控件只能使用單一的字體上的文字可以多行顯示可以將一個(gè)函數(shù)或方 已獲原作者授權(quán). 原系列地址: Python Tkinter 簡介 Button 控件是一種標(biāo)準(zhǔn) Tkinter 控件, 用來展現(xiàn)不同樣式的按鈕...
摘要:已獲原作者授權(quán)原系列地址簡介一提到這個(gè)詞很多人首先想到的是餐館里的菜單雖然餐館菜單和計(jì)算機(jī)程序中的菜單看起來一點(diǎn)也不像但他們確實(shí)有很多共同點(diǎn)在餐館中菜單列舉了所有菜品和飲料在計(jì)算機(jī)程序中菜單通過圖形界面展示了應(yīng)用程序可用的命令和功能在用戶界 已獲原作者授權(quán). 原系列地址: Python Tkinter 簡介 一提到menu這個(gè)詞, 很多人首先想到的是餐館里的菜單. 雖然餐館菜單和計(jì)算...
摘要:已獲原作者授權(quán)原系列地址控件控件用來展示一些文字短消息和控件有些類似但在展示文字方面比要靈活比如控件可以改變字體而控件只能使用一種字體它提供了一個(gè)換行對象以使文字可以斷為多行它可以支持文字的自動換行及對齊這里要澄清一下前面提到的控件可以改變 已獲原作者授權(quán). 原系列地址: Python Tkinter Message 控件 Message 控件用來展示一些文字短消息. Message...
摘要:已獲原作者授權(quán)原系列地址單選按鈕是一種可在多個(gè)預(yù)先定義的選項(xiàng)中選擇出一項(xiàng)的控件單選按鈕可顯示文字或圖片顯示文字時(shí)只能使用預(yù)設(shè)字體該控件可以綁定一個(gè)函數(shù)或方法當(dāng)單選按鈕被選擇時(shí)該函數(shù)或方法將被調(diào)用單選按鈕這個(gè)名字來源于收音機(jī)上的調(diào)頻按鈕這些按 已獲原作者授權(quán). 原系列地址: Python Tkinter Radio Buttons 單選按鈕是一種可在多個(gè)預(yù)先定義的選項(xiàng)中選擇出一項(xiàng)的 T...
摘要:已獲原作者授權(quán)原系列地址簡介本文講述如何使用的布局管理被稱作或有三種布局管理方式注意這三種布局管理在同一個(gè)里一定不可以混用布局管理有以下功能將控件放置在屏幕上包括控件的位置及控件的大小將控件注冊到本地窗口系統(tǒng)中管理控件在屏幕上的顯示雖然控件 已獲原作者授權(quán). 原系列地址: Python Tkinter 簡介: 本文講述如何使用 tkinter 的布局管理 (被稱作 layout ma...
閱讀 1686·2021-09-22 10:02
閱讀 1931·2021-09-02 15:40
閱讀 2835·2019-08-30 15:55
閱讀 2243·2019-08-30 15:44
閱讀 3593·2019-08-30 13:18
閱讀 3224·2019-08-30 11:00
閱讀 1945·2019-08-29 16:57
閱讀 564·2019-08-29 16:41