1. 程式人生 > >tkinter類和方法中的標籤佈局

tkinter類和方法中的標籤佈局

說明: 此處主要解決在類中各個方法不同標籤之間的統一佈局問題 在程式碼中有備註的步驟為重點和關鍵步驟 程式碼如下:

import tkinter as tk
from PIL import Image,ImageTk

class buju():
    def __init__(self):
        d=0

    def la(self):
        #frm=tk.Frame(root)
        frm.pack(side=tk.BOTTOM)
        tk.Label(root,text='厚德'.encode('utf-8').decode('utf-8'), font=('Arial', 15)).pack()
        a=tk.Label(frm_Left,text='載物'.encode('utf-8').decode('utf-8'), font=('Arial', 15)).pack()  #放在相應的frm_Left佈局內
        b=tk.Label(frm_Left, text='博愛'.encode('utf-8').decode('utf-8'), font=('Arial', 15)).pack()
        frm_Left.pack(side=tk.LEFT)  #並且結束後一定要將這個佈局模組pack下

        tk.Label(frm_R, text='敬業'.encode('utf-8').decode('utf-8'), font=('Arial', 15)).pack()
        tk.Label(frm_R, text='樂群'.encode('utf-8').decode('utf-8'), font=('Arial', 15)).pack()

        img = r"F:\PythonFiles\PycharmFile\pictures\ex13RandomNameWithPic\01.png"  
        photo = Image.open(img)  
        w, h = photo.size 
        resizePhoto = self.pic_resize(w, h, 153, 153, photo) 
        tkPhoto = ImageTk.PhotoImage(resizePhoto) 
        labelImg = tk.Label(frm_R, image=tkPhoto)
        labelImg.pack()
        labelImg.config(image=tkPhoto)  # 以下兩句程式碼非常重要,是保證圖在函式中可以被載入的途徑
        labelImg.image = tkPhoto
        labelImg.pack()

        frm_R.pack(side=tk.RIGHT)

    def pic_resize(self, w, h, w_box, h_box, pil_image): #圖形縮放
        f1 = 1.0 * w_box / w  # 1.0 forces float division in Python2
        f2 = 1.0 * h_box / h
        factor = min([f1, f2])
        width = int(w * factor)
        height = int(h * factor)
        return pil_image.resize((width, height), Image.ANTIALIAS)

if __name__ == '__main__':
    root=tk.Tk()
    root.title('隨機')
    root.geometry('300x200')
    frm=tk.Frame(root)  #窗體佈局
    frm_Left=tk.Frame(frm)  #窗體佈局的各個小模組均可以在主函式裡寫,然後再類裡直接呼叫就行
    frm_R=tk.Frame(frm)
    t=buju()
    t.la()

    root.mainloop()