用python tkinter模块做了一个小demo,页面上设置4个按钮,每个按钮点击会有流水的滴答声,每个按钮调用相应的方法,在此点击按钮后调用的方法仅为显示一个消息弹窗,显示图片的按钮打开文件对话框,可选择文件。
实现的最终效果如下图
运行环境:Windows +python2.7
下面以每个模块做具体说明
一. 选择图片
def picSelect(self):
self.set_button_sound() #设置按钮点击效果,点击后播放2秒声音mp3文件
default_dir = r"C:\Users\lenovon\Desktop" # 设置默认打开目录
fns = tkFileDialog.askopenfilenames(filetypes=[("all", "*.*"), ("text file", "*.txt")], title=u"选择图片",
initialdir=(os.path.expanduser(default_dir)))
fns_list = list(fns) #将选中的所有图片url转换成list格式
print "fns list:", fns_list
二.为你写诗,查看
tkMessageBox.showinfo('Message', '查看')
三.按钮设置
以选择图片的按钮为例说明
button = Button(app, text=button_texts[index],font=('方正舒体', 25),bd=0, bg='white', command=button_functions[index])
button.pack()
button.grid(row=0, column=column_index, sticky='n')
2. grid布局函数
grid有两个最为重要的参数,用来指定将组件放置到什么位置,一个是row,另一个是column。如果不指定row,会将组件放置到第一个可用的行上,sticky,按钮对齐方向,sticky = 'n',指定对齐方向为向上。
四.音乐播放
也可以用其他方法播放音乐,这里使用pygame 播放音乐
def set_button_sound(self):
water_drop_pwd = r"G:\water_drop.mp3" #音乐文件所在路径
pygame.mixer.init() #初始化
pygame.mixer.music.load(water_drop_pwd)
pygame.mixer.music.play() #开始播放
time.sleep(2.5) #设置播放时间为2.5秒
pygame.mixer.music.stop() #停止
# -*- coding: utf-8 -*-
import tkFileDialog
import tkMessageBox
from Tkinter import *
import pygame
from PIL import ImageTk, Image
import time
import os
class create_UI():
def __init__(self):
pass
def create_button(self, app):
button_functions = [self.picSelect, self.writePoet, self.showPoet, quit]
button_texts = ['选\n择\n图\n片', '为\n你\n写\n诗', '查\n看', '退\n出']
column_index = 3
button_num = len(button_functions)
for index in range(button_num):
button = Button(app, text=button_texts[index],font=('方正舒体', 25),bd=0, bg='white', command=button_functions[index])
button.grid(row=0, column=column_index, sticky='n')
column_index += 1
def ui(self):
app = Tk()
app.title("为你写诗")
app.resizable(0,0) #禁止调整窗口大小
image = Image.open(r'G:\img4.gif')
background_image = ImageTk.PhotoImage(image)
w = background_image.width()
h = background_image.height()
app.geometry('%dx%d+0+0' % (w, h))
background_label = Label(app, image=background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
self.create_button(app)
app.mainloop()
def set_button_sound(self):
water_drop_pwd = r"G:water_drop.mp3"
pygame.mixer.init()
pygame.mixer.music.load(water_drop_pwd)
pygame.mixer.music.play()
time.sleep(2.5)
pygame.mixer.music.stop()
def picSelect(self):
self.set_button_sound()
default_dir = r"C:\Users\lenovon\Desktop" # 设置默认打开目录
fns = tkFileDialog.askopenfilenames(filetypes=[("all", "*.*"), ("text file", "*.txt")], title=u"选择图片",
initialdir=(os.path.expanduser(default_dir)))
fns_list = list(fns)
print "fns list:", fns_list
def writePoet(self):
self.set_button_sound()
tkMessageBox.showinfo('Message', '查看')
def showPoet(self):
self.set_button_sound()
tkMessageBox.showinfo('Message', '展示结果')
if __name__ == "__main__":
demo = create_UI()
demo.ui()