python——Tkinter的简单学习

来源:互联网 发布:java wmf转jpg 编辑:程序博客网 时间:2024/05/17 09:06

Python提供了开发图形用户界面(GUI)的各种方案。下面列出最重要如下:


Tkinter: Tkinter的是Tk的GUI工具包,与Python附带的Python接口。
wxPython: 这是一个开源的Python接口的wxWindows http://wxpython.org.
JPython: JPython的是一个用于Java的Python端口,

这使得Python脚本在本地机器上的无缝接入到Java类库http://www.jython.org.


Tkinter最大的特点是跨平台,缺点是性能不太好,执行速度慢。
还有许多没有列出其他接口。您可以通过网络找到它们.
===========================================================
使用Tkinter创建一个GUI应用程序是一件容易的事。所有你需要做的是执行以下步骤:
导入Tkinter模块.
创建GUI应用程序的主窗口.
添加上述部件之一或更多的GUI应用程序.
进入主事件循环的由用户触发每个事件响应
=========================================================
由于版本的问题,有的时候,你要在本地安装python-Tk
sudo apt-get install python-Tk
=======================================================
下面以一个例子说明
#!/usr/bin/python

import Tkinter
top = Tkinter.Tk()
#此处添加各种组件
top.mainloop()
===========================================================

创建这样一个窗口


====================================================
Tkinter的部件
Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为部件.
目前有15种Tkinter的部件,例如Button,Lable

一些控件的用法可以参考一些前辈的,http://www.cnblogs.com/kaituorensheng/p/3287652.html#_label2
===========================================================
标准属性
例如Colors,Fonts
=========================================================
几何管理
Tkinter的部件有特定几何形状的管理方法,整个小部件父控件区域组织的目的。 Tkinter的公开以下几何经理类:包装,网格,位置.


pack() 方法-:这个的几何管理器组织之前,将其放置在他们的父widget块部件.
Pack使用很简单,就是w.pack(option)。常用的option有:
Side 表示把组件放到哪一边,TOP(上),BOTTOM(下),LEFT,RIGHT
Padx和pady  表示parcel的每一个边和组件的预留空间。
Ipadx和ipady,表示组件的每一个边和他包含的内容之间的预留空间。
Anchor表示在parcel放置组件的方式,缺省时CENTER。
grid()方法 - 这的几何管理器组织表状结构中的小部件的父部件.
place()方法 - 这个的几何管理器组织放置在一个特定的位置,在他们的父widget部件.


=========================================================================
小例子:
from Tkinter import *  #引入模块#resize函数是用来改变文字大小的,当进度条改变时调用def resize(ev=None):label.config(font='Helvetica -%d bold' % scale.get())#config函数就是通过设置组件的参数来改变组件的,这里改变的是font字体大小top=Tk()   #主窗口top.geometry('600x400')  #设置了主窗口的初始大小600x400label=Label(top,text='Hello world!',font='Helvetica -12 bold')  #设置标签字体的初始大小label.pack(fill=Y,expand=1)#scale创建进度条,设置scale=Scale(top,from_=10,to=40,orient=HORIZONTAL,command=resize)scale.set(12)  #设置起始位置scale.pack(fill=X,expand=1)quit = Button(top,text='QUIT',command=top.quit,activeforeground='white',activebackground='red')quit.pack()mainloop()


===========================================================
结果截图:




============================================================
小例子二:
小小计算器,源代码如下:
=======================================================
#/usr/bin/python# coding: utf-8# 引入Tkinter库from Tkinter import *# 操作事件绑定的函数,这些函数中都会对显示的内容进行更新,因此显示内容display作为全局变量# 更新显示内容函数,由按钮事件触发,将按钮内容添加到已显示内容后def updateDisplay(buttonString):    content = display.get()    if content == "0":        content = ""    display.set(content + buttonString)# 计算表达式的结果,表达式即为显示的内容,并将结果显示出来(需要换行并添加等于号)def calculate():    result = eval(display.get())    display.set(display.get() + '=\n' + str(result))# 清空操作,由清空按钮事件触发def clear():    display.set('0')# 删除操作,由删除按钮事件触发,删除前一个字符def backspace():    display.set(str(display.get()[:-1]))# 定义主窗口,设置窗口名称和大小200×320,并设置屏幕坐标为(300,300)mainUI = Tk()mainUI.title('Calculator')mainUI.geometry('200x210+300+300')# 设置显示内容,默认显示0# 这里使用StringVar属于Tkinter库,在界面编程的时候,有时需要跟踪变量值的变化,# 以保证值的变更随时可以显示在界面上。python无法直接做到,所以定义了一系列新的的对象,# 例如StringVar、BooleanVar、DoubleVar、IntVar。display = StringVar()display.set('0')# 添加计算器显示区域,使用Label,并设置背景色及大小textLabel = Label(mainUI)# 这里需要注意width宽度的单位,如果你在Label中显示文本,# 那么这些选项将以文本的单位为定义按钮的尺寸。# 如果你替而代之显示图象,那么按钮的尺寸将是像素(或其它的屏幕单位)。textLabel.config(bg='grey', width=28, height=3, anchor = SE)textLabel['textvariable'] = display# 设置显示区域在Grid布局中的位置textLabel.grid(row=0, column=0, columnspan=4)# 添加按钮并放置到适当的区域# 清空按钮,其中text为按钮上的文字,fg为按钮的字体颜色(bg为文字背景的按钮颜色),width为按钮宽度# command参数为按钮事件绑定函数,绑定到clear()函数,按钮按下时触发clearButton = Button(mainUI, text = 'C', fg = 'orange', width = 3, command = clear)# 设置清空按钮的位置,行号为1,列号为0,即第二行第一列clearButton.grid(row = 1, column = 0)# 其他按钮位置,由于与清空按钮类似不再注释,请自行查看Grid中的位置,有的按钮采用lambda来生成匿名函数,原因是需要处理传入的参数Button(mainUI, text = 'DEL', width = 3, command = backspace).grid(row = 1, column = 1)Button(mainUI, text = '/', width = 3, command = lambda:updateDisplay('/')).grid(row = 1, column = 2)Button(mainUI, text = '*', width = 3, command = lambda:updateDisplay('*')).grid(row = 1, column = 3)Button(mainUI, text = '7', width = 3, command = lambda:updateDisplay('7')).grid(row = 2, column = 0)Button(mainUI, text = '8', width = 3, command = lambda:updateDisplay('8')).grid(row = 2, column = 1)Button(mainUI, text = '9', width = 3, command = lambda:updateDisplay('9')).grid(row = 2, column = 2)Button(mainUI, text = '-', width = 3, command = lambda:updateDisplay('-')).grid(row = 2, column = 3)Button(mainUI, text = '4', width = 3, command = lambda:updateDisplay('4')).grid(row = 3, column = 0)Button(mainUI, text = '5', width = 3, command = lambda:updateDisplay('5')).grid(row = 3, column = 1)Button(mainUI, text = '6', width = 3, command = lambda:updateDisplay('6')).grid(row = 3, column = 2)Button(mainUI, text = '+', width = 3, command = lambda:updateDisplay('+')).grid(row = 3, column = 3)Button(mainUI, text = '1', width = 3, command = lambda:updateDisplay('1')).grid(row = 4, column = 0)Button(mainUI, text = '2', width = 3, command = lambda:updateDisplay('2')).grid(row = 4, column = 1)Button(mainUI, text = '3', width = 3, command = lambda:updateDisplay('3')).grid(row = 4, column = 2)Button(mainUI, text = '=', width = 3, bg = 'orange', height = 3,command = lambda:calculate()).grid(row = 4, column = 3, rowspan = 2)Button(mainUI, text = '0', width = 10, command = lambda:updateDisplay('0')).grid(row = 5, column = 0, columnspan = 2)Button(mainUI, text = '.', width = 3, command = lambda:updateDisplay('.')).grid(row = 5, column = 2)# 进入主循环mainUI.mainloop()


=================================================================
结果如图:


=================================================================


以上就是简要的一个对于Tkinter的总结。需要学习的还有很多,如果这里有什么需要补充改进或者有错的还希望指正!





0 0