1. 使用的模塊
from tkinter import Frame, Tk, Button, Label, Listbox
from tkinter.font import Font
from PIL import Image, Image TK # Image Tk.PhotoImage()
import os
import pygame
from datetime import datetime
from threading import Tread
import time
2. 窗口創建,窗口和組件( 小部件 ) 之間的關係
頂層窗口 : master = Tk()
組件在創建時,必須指定它的父窗口(指定上下級關係):
listFrame = Frame(master)
nameLabel = Label (listFrame)
3. 組件或小部件裝載到窗口(佈局)
1.pack() # 分爲 TOP,BOTTOM,LEFT,RIGHT 來裝載顯示
指定side=LEFT|RIGHT|TOP|BOTTOM
2.grid() #以表格方式(行、列)裝載顯示。
指定row, column
*** 注意:在同一個窗口(或Frame)中,直接子部件或組件的佈局方式必須統一
4. 小部件的時間處理
在創建Button等可處理事件的部件時,可以在構造函數中傳入一個command屬性,屬性值是一個有效的函數或者方法名,也可以通過部件對象方式,如 playBtn['command'] = play
5.(在部件中)顯示圖片
img = Image.open('xxx.jpg') # img 需要轉換格式,圖片太大時,可以使用img,resize(width,height), Image.ANTIALIAS)
imgPhoto = ImageTk.PhotoImage(img)
imgLabel = Lable(image = imgPhoto)
6. 創建線程(子線程)和啓動線程(顯示歌詞的時候調用的線程)
tt= Thread(target=運行的函數名,args=(函數參數列表, ), kwargs= {}) # 子線程
tt.start() # 啓動線程,線程啓動之後,則會運行target指定的函數,當函數運行結束時,則線程也會停止,強行等待線程結束(主線程): tt.join() #阻塞當前線程的執行,一直等待(主)子線程完成,再執行下一行代碼。
7. pygame 音樂的播放
1.) pygame.mixer.init() # 初始化音視頻的合成器
2.) pygame.mixer.music.load(path) # 加載音樂文件
3.) pygame.mixer.music.play() # 播放
4.) pygame.mixer.music.pause() # 暫停
5.) pygame.mixer.music.unpause() #取消暫停
6). pygame.mixer.music.stop() # 停止
7). pygame.mixer.music.get_pos( ) #獲取當前正在播放的位置(時間,毫秒)
8). pygame.mixer.music.set_pos(ms) #設置當前播放的位置