python的GUI

来源:互联网 发布:手机怎么复制淘宝链接 编辑:程序博客网 时间:2024/05/21 18:47

由于在Python 3.x上安装wx失败 所以最后使用 Tkinter实现,python2.x在这个模块上还是有挺多的区别的。

创建并运行GUI程序的基本步骤:
1. 导入tkinter模块  (Python 3.x)

       结合2, 我导入了部分需要的子模块

        from tkinter import Tk, Button,Frame, Label, Entry, filedialog,

2. 创建一个顶层窗口对象 需要一个放置所有组件的地方
top=tkinter.Tk() 或 root=tkinter.Tk() 通常被称为根窗口,顶层窗口是指那些在程序中独立显示的部分,可在GUI程序中创建多个顶层窗口,但是他们中只能有一个是根窗口
3. 在顶层窗口对象中创建所有的GUI模块
button 按钮,canvas 画布,checkbutton 选择按钮, entry 文本框,frame 框架,label 标签, listbox 列表框,menu 菜单,menubutton 菜单按钮,message 消息框,radiobutton 单选按钮,
scale 进度条,线性滑块组件
scrollbar 滚动条,
text 文本域,收集或显示用户输入的文字
toplevel 顶级
4. 把这些GUI模块与底层代码相连接
事件驱动处理,组件会有一些相应的行为,例如按钮被按下,或者文本框被写入,这种形式的用户行为被称为事件(event),GUI程序对事件所采取的响应动作被称为回调(callback)
5. 进入主事件循环
一旦packer决定好组件的尺寸和对齐方式,它将会在屏幕上放置它们,当所有这些组件,包括顶层窗口,最终显示在屏幕上时,GUI程序就会进入一个“服务器式”的无限循环。这个无限循环包括等待GUI事件、处理事件、然后返回等待模式,等待下一个事件。
tkinter.mainoop()

一个简单的例子 之前写了一个 makeMoma.py的脚本实现某种图片处理,这里尝试添加一个GUI

import os
from tkinter import Tk, Button,Frame, Label, Entry, filedialog
from makeMona import *

CurDir=os.getcwd()
OpenFileDir=CurDir
SaveFileDir=CurDir

def callback_input_dir():
    global CurDir
    global OpenFileDir
    OpenFileDir=filedialog.askopenfilename(initialdir=CurDir)
    entry1.insert(0,OpenFileDir)
    print ('callback input dir')

def callback_output_dir():
    global CurDir
    global SaveFileDir
    entry2.insert(0,filedialog.askdirectory(initialdir=CurDir))
    print('callback input dir')

def callback_start_run():
    print('running')
    global OpenFileDir
    global SaveFileDir
    SaveFileDir=entry2.get()
    masaic_picture(OpenFileDir,SaveFileDir) #function in makeMode


root = Tk()
root.title('masaic picture')

win=Frame(root)

label1= Label(root,text="Picture Path:",font='Helvetica -12 bold')
label1.grid(row=0,column=0)

label2=Label(root,text="Output Path:",font='Helvetica -12 bold')
label2.grid(row=1,column=0)

entry1= Entry(root)
entry1.grid(row=0,column=1)

entry2=Entry(root)
entry2.grid(row=1,column=1)

button1=Button(root,text='select',command=callback_input_dir)
button1.grid(row=0,column=2)

button2=Button(root,text='select',command=callback_output_dir)
button2.grid(row=1,column=2)

button3=Button(root,text='START RUN',command=callback_start_run)
button3.grid(row=2,column=0)

root.mainloop()

0 0
原创粉丝点击