Python GUI tkinter编程

参考文章http://blog.csdn.net/trochiluses/article/details/22212645

介绍:

tkinter是Python自带的GUI图形库,在我的Python3.5.2中无需手动安装

Python的还有其他的一些常用GUI库,PyGTK, PyQt, and wxPython,除此之外还有很多其他Python GUI库,而且大多都是跨平台的

使用Python库时多使用dir(),help()信息会有很大的帮助


创建并运行GUI的过程如下:
1)导入Tkinter模块
2)创建顶层串口对象top(名字不限),容纳整个GUI程序
3)在top上创建其他模块
4)将这些GUI模块与底层代码关联
5)进入主循环事件

Tkinter.Tk()返回的窗口是根窗口,一般命名是root或者top。我们可以创建多个顶层窗口(其他所有的组件都放在这个窗口之中),但是只有一个root。
       组件既可以是独立的,也可以作为容器存在,作为容器的时候,他就是容器中组件的父组件。
       组件会有一定的行为和动作:按钮被按下、进度条被拖动、文本框被写入,这些用户行为是“事件”,针对事件的相应动作称为“回调函数”(callback)。用户操作,产生事件,然后相应的callback执行,整个过程被称为事件驱动,很显然,我们需要定义callback函数。
        界面编程的工作主要有三个:组件的创建与布局,组件间动作的关联,回调函数的处理


tkinter编程:

1、创建顶层窗口

import tkinter as tk	#导入tkinter
top = tk.Tk()		#添加主布局


2、在顶层窗口中添加组件

组件有:

Button:按钮,类似标签,提供额外的功能:鼠标掠过、按下、释放、键盘操作

Canvas:画布,提供绘图功能

checkbutton:选择按钮,可以选择任意个

Entry:文本框

Frame:框架,包含其他组件的纯容器

label:注意,不是lable

listbox:列表框

menu:菜单

menubutton:菜单按钮

message:消息框,可以显示多行文本

radiobuttonscale:单选按钮

scrollbar:滚动条——对其支持的组件(文本框、画布、列表框、文本区域)提供滚动功能

text:文本区域

scale:进度条

toplevel:顶级,类似框架,提供一个单独的容器。

提供给Tk支持的其他模块:

tkinter.scrolledtext 可滚动的文字部件;
tkinter.colorchooser 颜色选择对话框;
tkinter.commondialog 对话框基础类;
tkinter.filedialog 文件对话框;
tkinter.font 字体;
tkinter.messagebox 标志Tk消息对话框;
tkinter.simpledialog 基础简洁的对话框;
tkinter.dnd tkinter拖放支持;
turtle

Turtle graphics in a Tk window. 

3、组件的创建与布局

btn_left = tk.Button(top, text='hi')		#创建按钮并设置父容器为top,设置按钮文字
btn_left.pack(side='left', padx=3, pady=3)	#将组件打包到父容器中显示,设置显示参数
或使用
btn_left = tk.Button(top, text='hi').pack(side='left')


其中pack函数参数有(翻译可能不是很准确):
    after=widget - pack it after you have packed widget;放到已经添加的组件之后
    anchor=NSEW (or subset) - position widget according to
                              given direction;给定组件方向
    before=widget - pack it before you will pack widget;放在将给组件之前
    expand=bool - expand widget if parent size grows;如果父容器尺寸变大,组件也跟着变大
    fill=NONE or X or Y or BOTH - fill widget if widget grows;组件变大方向
    in=master - use master to contain this widget;将组件放在容器中
    in_=master - see 'in' option description
    ipadx=amount - add internal padding in x direction;x方向内边缘填充
    ipady=amount - add internal padding in y direction;y方向内边缘填充
    padx=amount - add padding in x direction;x方向外边缘填充
    pady=amount - add padding in y direction;y方向外边缘填充
    side=TOP or BOTTOM or LEFT or RIGHT -  where to add this widget.;位置
同时,在父容器top中还能创建子容器frame,组件同样添加到子容器frame中

frame = tk.Frame(top)  #创建框架容器,可以在容器内布局

sbar = tk.Scrollbar(frame).pack(side='left', fill='y')
listbox = tk.Listbox(frame, height=15, width=50).pack(side='left', fill='both')

frame.pack()


4、逻辑响应
和大多数GUI编程一样,采用callback回调编程,即事件发生后调用回调函数响应。在Qt中为产生事件信号后通知槽函数响应,需要将信号与槽绑定,在这里也是一样,需要将事件与回调函数绑定。
绑定和事件:
绑定函数能让你监听确定的事件 并且当事件发生的时候触发回调函数. The form of the bind method is:
def bind(self, sequence, func, add=''):
输入help(tk.Button.bind)可以看到
sequence 是一个字符串,表示事件。格式为<MODIFIER-MODIFIER-TYPE-DETAIL> 

MODIFIER 有Control, Mod2, M2, Shift, Mod3, M3, Lock, Mod4, M4,Button1, B1, Mod5, M5 Button2, B2, Meta, M, Button3,B3, Alt, Button4, B4, Double, Button5, B5 Triple,Mod1, M1. 

TYPE 有 Activate, Enter, Map,ButtonPress, Button, Expose, Motion, ButtonRelease,FocusIn, MouseWheel, Circulate, FocusOut, Property,Colormap, Gravity Reparent, Configure, KeyPress, Key,Unmap, Deactivate, KeyRelease Visibility, Destroy,Leave;

DETAIL是按键 ButtonPress,ButtonRelease 的数并且DETAIL 是 Keysym for KeyPress andKeyRelease. 

例如<Control-Button-1> 是按住 Control 加 按键 “1”

func 是一个Python函数名,当事件发生时调用
add 不传参数表示此事件的这个绑定会取代其他的当前事件callback绑定,传'+'表示此绑定加入当前事件响应函数队列中
例如:

button.bind("<Enter>", button_callback)	


5、完整示例

import tkinter as tk

def button_callback(event):
    print("ButtonPress")

top = tk.Tk()   #创建主容器

btn = tk.Button(top, text='click')       #创建按钮并设置父容器为top,设置按钮文字
btn.pack(side='right')                 #将组件打包到父容器中显示,设置显示参数



frame = tk.Frame(top)  #创建框架容器,可以在容器内布局

sbar = tk.Scrollbar(frame).pack(side='left', fill='y')
listbox = tk.Listbox(frame, height=15, width=50).pack(side='left', fill='both')

frame.pack()


btn.bind("<ButtonPress>", button_callback)


当然,以上代码只是最基本的结构。如果需要更好的响应,需要查看各个控件的属性,在回调函数中改变。
小结:GUI编程中有了想法之后,先布局即创建控件(控件可以是布局框架),根据控件属性(利用help文档)控制显示效果,绑定事件响应函数来改变控件属性完成逻辑功能。













  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python GUI Tkinter界面编程是使用Python编程语言和Tkinter模块创建图形用户界面的过程。TkinterPython标准库中的一个模块,它提供了一组工具和组件,可以用于创建各种类型的GUI应用程序。使用Tkinter,开发人员可以创建按钮、标签、文本框、滚动条、菜单等各种控件,并将它们组合在一起以创建完整的GUI应用程序。Tkinter还提供了一些布局管理器,可以帮助开发人员轻松地布置和排列控件。Python GUI Tkinter界面编程Python编程中的一个重要领域,它可以用于创建各种类型的应用程序,如桌面应用程序、游戏、数据可视化工具等。 ### 回答2: Python是一种高级编程语言,广泛应用于各种领域,其中图形用户界面(GUI编程是其中一个重要分支。TkinterPython最常用的GUI编程库之一,它提供了一组常用的GUI组件,如按钮、标签、文本框等,可以通过构建这些组件来创建各种各样的GUI应用程序。 首先,要使用Tkinter编写GUI应用程序,需要导入tkinter模块。然后,可以定义一个根窗口对象,并使用各种组件来构建GUI界面。例如,可以使用Button组件创建一个按钮,使用Label组件创建一个标签,使用Entry组件创建一个文本框等。 在创建GUI界面时,可以设置组件的各种属性,如位置、大小、颜色、字体等。此外,还可以通过为组件定义回调函数来实现用户交互功能,例如通过按钮的点击事件来执行一些操作。 除了基本的组件,Tkinter还提供了其他高级组件,如Canvas、Menu、ScrollBar等,可以用于创建更复杂的GUI应用程序。此外,Tkinter还支持图片、动画、声音等多媒体功能,并提供了一些布局管理器,可帮助开发人员更方便地控制GUI界面的布局。 总之,Python Tkinter是一个功能强大的GUI编程库,可以用于构建各种类型的GUI应用程序。它易于学习、灵活性强、并且与Python语言天然结合,使得开发者拥有无限可能,可以借此创建出非常漂亮、实用的GUI应用程序,带来很好的使用体验。 ### 回答3: Python是一种非常流行的面向对象编程语言,被广泛用于数据科学和机器学习等领域。TkinterPython的一个标准图形用户界面(GUI)工具包,它提供了一个方便的方式来创建窗口和各种用户界面元素,如标签,按钮,文本框和滑块等。 TkinterPython内置的库之一,因此使用它无需安装任何其他的软件或库。这使得开发者可以快速方便地开始使用TkinterGUI开发工具。同时,由于它是Python的一部分,所以与使用其他GUI库时存在的兼容性问题也比较少。 在使用Tkinter进行GUI开发时,开发者通常会建立一个主窗口或根窗口,然后向该窗口添加各种用户界面元素,例如标签,按钮等。这些元素可以通过代码定义,或者可以使用可视化设计工具来创建和配置。 对于新手和初学者而言,需要花费一些时间来熟悉Tkinter的API以及如何构建GUI。但一旦掌握了基本的概念和方法,就可以快速地创建复杂的窗口和应用程序。Tkinter还提供了一些高级功能,例如对话框,菜单和弹出式菜单等,这些功能可以帮助开发者创建更加丰富和互动的用户界面。 PythonTkinter在数据科学和机器学习领域已经被广泛采用,也有很多文档和资源可以参考。因此,尽管Tkinter最初可能会对一些开发者来说具有一定的学习曲线,但它仍然是一种强大和流行的GUI工具包,可以帮助使用Python进行开发并创建出漂亮的界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值