2017年10月1日 星期日

python 3 筆記 - Tkinter窗口設計(選單、按鈕、圖片、文字)

python 3 筆記 - Tkinter窗口設計(選單、按鈕、圖片、文字)

源自於
http://beanobody.blogspot.tw/2015/12/python-3-tkinter.html

#從tkinter匯入所有內建函數與模組
from tkinter import *;
#下載與安裝pillow
#http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow
#下載符合python版本的pillow後,於cmd下(最高權限),到pillow所在的路徑
#執行pip install pillow-3.0.0-cp34-none-win32.whl(此pillow為python 3.4 32bit的3.0版本)
from PIL import Image, ImageTk

#建立類別,Window,繼承Frame類別。Frame是一個類別,來自於tkinter模組,可參閱Lib/tkinter/__init__
class Window(Frame): #建立視窗實體
    #初始化設定
    def __init__(self, master = None):
        Frame.__init__(self, master); #你想要透過Frame類別傳送的參數
        self.master = master; #參考到主要的小窗口,也就是tk視窗
        self.init_window();

    #初始視窗的創建
    def init_window(self):
        #改變我們主要的小窗口的標題
        self.master.title('GUI');
        #允許小窗口去取得視窗的整個空間
        self.pack(fill=BOTH, expand=1);
        #建立一個按鈕實體
        quitButton = Button(self, text = 'Quit');
        #將按鈕放到視窗裡,座標為(10,10)
        quitButton.place(x = 10, y = 10);
        #建立一個選單實體
        menu = Menu(self.master);
        self.master.config(menu = menu);
        #建立檔案物件
        file = Menu(menu);
        #添加一個命令到選單選項,呼叫它來離開,而命令,它在client_exit事件執行
        file.add_command(label = 'Exit', command = self.client_exit);
        #添加一個File到選單
        menu.add_cascade(label = 'File', menu = file);
        #建立檔案物件
        edit = Menu(menu);
        #添加一個命令到選單選項,呼叫它來離開,而命令,它在client_exit事件執行
        edit.add_command(label = 'Undo');
        edit.add_command(label = 'Show Img', command = self.showImg);
        edit.add_command(label = 'Show Text', command = self.showText);
        #添加Undo到選單
        menu.add_cascade(label = 'Edit', menu = edit);

    def client_exit(self):
        exit();

    def showImg(self):
        load = Image.open('20151211_tkinter.jpg');
        render = ImageTk.PhotoImage(load);
        #標籤可以是文字或圖片
        img = Label(self, image = render);
        img.image = render;
        img.place(x = 50, y = 50);  #將影像放入視窗裡,座標為(50,50)

    def showText(self):
        text = Label(self, text = '成功呈現');
        text.pack();
     
#視窗的建立,只會有一個,但是你可以在視窗裡建立小窗口
root = Tk();

#視窗的大小
root.geometry('400x300');

app = Window(root); #建立一個實體

root.mainloop(); #呈現它

沒有留言:

張貼留言

Messaging API作為替代方案

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