python tkinter写图形界面

版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/Tifficial/article/details/78116862

用python tkinter模块做了一个小demo,页面上设置4个按钮,每个按钮点击会有流水的滴答声,每个按钮调用相应的方法,在此点击按钮后调用的方法仅为显示一个消息弹窗,显示图片的按钮打开文件对话框,可选择文件。


实现的最终效果如下图


运行环境:Windows +python2.7

下面以每个模块做具体说明

一. 选择图片

  • 主要为了打开文件对话框
  • 可多选,可单选, 多选 ctrl 按钮+鼠标点击选择
  • 选择一张图片后会显示图片的路径url

 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方法,点击后弹出消息框,简单显示信息
    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')

1.Button()函数

  • text - 按钮上显示的文字
  • font - 按钮上显示文字的字体,windows下有方正舒体,可以直接用,如果是linux系统,则需要安装字体
  • bd - 设置Button的边框大小;bd(bordwidth)缺省为1或2个像素
  • bg - 背景颜色,因为画面颜色是白色,所以按钮的颜色也设置成了白色

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()





猜你喜欢

转载自blog.csdn.net/Tifficial/article/details/78116862