2017年10月1日 星期日

[Python]筆記_UI模組(tkinter)

源自於
http://chienleebug.blogspot.tw/2017/07/pythonuitkinter.html

[Python]筆記_UI模組(tkinter)

  1. Python
    • 3.6.1
  2. tkinter(圖形使用者介面套件)
    • import tkinter as tk-->載入套件
    • 主視窗名稱 = tk.TK()-->建立主視窗
    • 主視窗名稱.geometry("寬度"x"高度")-->視窗尺寸
    • 主視窗名稱.title("視窗抬頭")-->視窗抬頭
    • 元件名稱 = tk.Label(容器名稱,參數1,參數2,....)-->(標籤元件)
    • 元件名稱 = tk.Button(容器名稱,參數1,參數2,....)-->(按鈕元件)
    • textvariable-->動態取得或設定元件內容
      • tk.StringVar()-->資料型態為字串,預設為空字串
      • tk.IntVar()-->資料型態為整數,預設為0
      • tk.DoubleVar()-->資料型態為浮點數,預設為0.0
    • 文字變數.get()-->取元件文字內容
    • 文字變數.set(字串)-->設定元件文字內容
    • 元件名稱 = tk.Text(容器名稱,參數1,參數2,....)-->(文字區塊)
      • 元件名稱.insert(加入型態,字串)
        • 加入型態tk.INSERT-->將字串加入文字方塊
        • 加入型態tk.END-->將字串加入文字方塊,並結束文字方塊內容
    • 元件名稱.config(參數1,參數2,....)-->變更元件設定的參數
    • 元件名稱 = tk.Entry(容器名稱,參數1,參數2,....)-->文字編輯元件
    • 元件名稱 = tk.Radiobutton(容器名稱,參數1,參數2,....)-->選項按鈕元件
    • 元件名稱 = tk.Checkbutton(容器名稱,參數1,參數2,....)-->核取方塊元件
    • 元件名稱.pack()-->是將元件視為矩形物件顯示,提供了選項在介面中的位置,選項有:side、expand、fill。
    • 元件名稱.grid()-->是將元件使用表格方式顯示,採用行列來確定在介面中的位置,row是行;column是列。
    • 元件名稱.place()-->是通過在介面中的橫縱坐標來固定位置。
    • 視窗區塊變數 = tk.Frame(容器名稱,參數1,參數2,....)-->視窗區塊
    • 主視窗名稱.mainloop()-->進入使用者互動模式
  3. 範例
    • import tkinter as tk
    • win=tk.Tk()
    • #視窗抬頭名稱
    • win.title("Tkinter Demo")
    • #視窗小圖檔
    • win.iconbitmap('ui.ico')
    • #視窗初始尺寸,字串(寬x長+左位移+右位移),例如("450x200+10+10")
    • win.geometry("450x200")
    • #視窗禁用變更尺寸,參數可寫False或0
    • #win.resizable(False, False)
    • #視窗最小尺寸
    • win.minsize(450,200)
    • #視窗最大尺寸
    • win.maxsize(900,400)
    • #視窗設為Windows風格
    • #win.attributes("-toolwindow", 1) 
    • #視窗設為置頂視窗
    • #win.attributes("-topmost", 1) 
    • #視窗初始最大化
    • #win.state("zoomed")
    • #視窗初始最小化
    • win.iconify()
    • #視窗初始還原最小化
    • #win.deiconify()
    • #視窗背景顏色,可帶入顏色英文或代碼,可參考https://www.toodoo.com/db/color.html
    • win.configure(background='#888888')

    • def button_click():
    • win.title("Demo")

    • #建立標籤
    • label0 = tk.Label(win, text="Hello Python0!", pady=6,bg="green", fg="#000000", font=("新細明體", 12))
    • label0.place(x=0, y=40, width=150, height=40)

    • #建立按鈕
    • Button0 = tk.Button(win, text="Change Title",command=button_click)
    • Button0.place(x=0, y=80, width=150, height=40)

    • #建立可放置元件的容器 - frame1
    • fram1 = tk.Frame(win)
    • fram1.pack()
    • #建立標籤1,放入容器 - frame1
    • label1 = tk.Label(fram1, text="Hello Python1!", pady=6,bg="green", fg="#000000", font=("新細明體", 12))
    • label1.pack()

    • #建立按鈕1,放入容器 - frame1
    • Button1 = tk.Button(fram1, text="Click1")
    • Button1.pack()

    • #建立可放置元件的容器 - frame2
    • fram2 = tk.Frame(win)
    • fram2.pack()
    • #建立標籤2,放入容器 - frame2
    • label2 = tk.Label(fram2, text="Hello Python2!", pady=6,bg="green", fg="#000000", font=("新細明體", 12))
    • label2.pack()

    • #建立按鈕2,放入容器 - frame2
    • Button2 = tk.Button(fram2, text="Click2")
    • Button2.pack()
    • win.mainloop()
  4. 參考資料
    • https://twideem.github.io/pages/overcast/19880307A.html
    • https://dotblogs.com.tw/larrynung/2013/08/06/113626
    • http://khanwhlee.blogspot.tw/2017/02/python-guitkinter-tkinter.html
    • http://blog.csdn.net/wangyiyan315/article/details/16821381

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...