天天看點

tkinter基本概念

tkinter基本概念

GUI: Graphical User Interface 圖形使用者接口

from tkinter import *      

列出tkinter版本

import tkinter
print(tkinter.TkVersion)      

建立視窗

通常将使用Tk( )方法建立的視窗稱為根視窗,之後可以在此根視窗中建立許多控件,也可以在此根視窗中建立上層視窗。

建立空白視窗,視窗預設名稱是tk

from tkinter import *
root = Tk()
root.mainloop()      

視窗大小是預設大小,當視窗出現後,可以拖曳移動視窗或更改視窗大小

在GUI程式設計中,有時候也将上述所建立的視窗(window)稱為容器(container)。

視窗屬性的設定

與視窗相關的方法

tkinter基本概念

設定視窗标題為MyWindow,同時設定寬是300,高是160

from tkinter import *
root = Tk()
root.title("MyWindow")
root.geometry("300x160")
root.configure(bg="yellow")
root.mainloop()      
除了可以使用名稱直接設定色彩,還可以使用十六進制方式設定色彩RGB,其中每個色彩用兩個十六進制數字表示。

使用mystar.ico更改系統預設的圖示,同時使用另一種更改背景顔色的方法。

from tkinter import *
root = Tk()
root.configure(bg="#00ff00")
root.iconbitmap("mystar.ico")
root.mainloop()      
視窗位置的設定

geometry( )方法除了可以設定視窗的大小,也可以設定視窗的位置,此時它的文法格式如下。

geometry(widthxheight+x+y)      
  • widthxheight說明視窗的寬和高,width與height用x分隔
  • “+x”表示x是視窗左邊距離螢幕左邊的距離

    如果是“-x”,則表示x是視窗右邊距離螢幕右邊的距離

  • “+y”表示y是視窗上邊距離螢幕上邊的距離

    如果是“-y”則表示y是視窗下邊距離螢幕下邊的距離

獲得螢幕的寬度和高度

螢幕 不是 視窗

root.winfo_screenwidth()
root.winfo_screenheight()      
設計視窗時将此視窗放在螢幕中央
from tkinter import *
root = Tk()
screenWidth = root.winfo_screenwidth()
screenHeight = root.winfo_screenheight()
w = 300
h = 160
x = (screenWidth -w)/2
y = (screenHeight-h)/2
root.geometry("%dx%d+%d+%d"%(w,h,x,y))
root.mainloop()      

tkinter的Widget

Widget可以翻譯為控件或元件或部件。

視窗建立完成後,下一步是在視窗内建立控件,将這些控件統稱為Widget。

  • Button(按鈕)
  • Canvas(畫布)
  • Checkbutton(多選按鈕)
  • Entry(文本框)
  • Frame(架構)
  • Label(标簽)
  • LabelFrame(标簽架構)
  • Listbox(清單框)
  • Menu(菜單)
  • MenuButton(菜單按鈕)
  • Message(消息)
  • OptionMenu(下拉式菜單)
  • PanedWindow(面闆)
  • Radiobutton(單選按鈕)
  • Scale(尺度)
  • Scrollbar(滾動條)
  • Spinbox(可微調輸入控件)
  • Text(文字區域)
  • Toplevel(上層視窗)
Widget的共同屬性
  • Dimensions:大小
  • Colors:顔色
  • Fonts:字形
  • Anchor:錨(位置參考點)
  • Relief styles:屬性邊框
  • Bitmaps:顯示位圖
  • Cursors:滑鼠外形
Widget的共同方法
  1. Configuration
  • config(option=value)

    Widget屬性可以在建立時設定,也可以在程式執行時使用config( )重新設定

  • cget("option")

    取得option參數值

  • keys( )

    可以用此方法獲得所有該Widget的參數

  1. Event Processing
  • mainloop( )

    讓程式繼續執行,同時進入等待與處理視窗事件

  • quit( )

    Python Shell視窗結束,但是所建視窗繼續執行

  • update( )

    更新視窗畫面

  1. Event callbacks
  • bind(event,callback)

    事件綁定

  • unbind(event)

    解除綁定

  1. Alarm handlers
  • after(time,callback)

    間隔指定時間後調用callback( )方法

加強版的tkinter子產品

tkinter在後來也推出了加強版的子產品,稱為tkinter.ttk,有時簡稱ttk

ttk子產品新增的Widget

  • Combobox
  • Notebook
  • Progressbar
  • Separator
  • Sizegrip 可以拖曳最上層視窗右下方更改最上層視窗的大小。
  • Treeview
導入子產品
from tkinter import ttk      

如果使用下列方式導入ttk,可以覆寫原先tkinter的控件:

from tkinter import *
from tkiner.ttk import *      

使用ttk可以有更好的外觀,而且也可以跨平台使用,不過并沒有100%相容

例如,fg、bg參數或一些外觀相關的參數tk和ttk是不相同。

ttk使用的是ttk.Style類别。

RGB色彩表

tkinter基本概念
tkinter基本概念