Tkinter 编程
1、Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库;基本的GUi都可以实现,但是如果你是要实现专业的;如果真的需要使用Python开发GUI应用,wxPython、PyQt、PyGTK等模块都是不错的选择。
2、Tkinter的提供各种控件,如按钮,标签和文本框;这些控件通常被称为控件或者部件。如下所示:
控件 | 描述 |
按钮控件;在程序中显示按钮。 | |
画布控件;显示图形元素如线条或文本 | |
多选框控件;用于在程序中提供多项选择框 | |
输入控件;用于显示简单的文本内容 | |
Frame | 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 |
Label | 标签控件;可以显示文本和位图 |
Listbox | 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户 |
Menubutton | 菜单按钮控件,由于显示菜单项。 |
Menu | 菜单控件;显示菜单栏,下拉菜单和弹出菜单 |
Message | 消息控件;用来显示多行文本,与label比较类似 |
Radiobutton | 单选按钮控件;显示一个单选的按钮状态 |
Scale | 范围控件;显示一个数值刻度,为输出限定范围的数字区间 |
Scrollbar | 滚动条控件,当内容超过可视化区域时使用,如列表框。. |
Text | 文本控件;用于显示多行文本 |
Toplevel | 容器控件;用来提供一个单独的对话框,和Frame比较类似 |
Spinbox | 输入控件;与Entry类似,但是可以指定输入范围值 |
PanedWindow | PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。 |
LabelFrame | labelframe 是一个简单的容器控件。常用与复杂的窗口布局。 |
tkMessageBox | 用于显示你应用程序的消息框。 |
3、标准属性
标准属性也就是所有控件的共同属性,如大小,字体和颜色等等
属性 | 描述 |
Dimension | 控件大小; |
Color | 控件颜色; |
Font | 控件字体; |
Anchor | 锚点; |
Relief | 控件样式; |
Bitmap | 位图; |
Cursor | 光标; |
4、几何管理(geometry manager)
Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,一下是Tkinter公开的几何管理类:包、网格、位置
位置 | 1、place():开发者提供控件的大小和摆放位置 |
包 | 2、pack():自动将控件填充到合适的位置 |
网格 | 3、Grid():基于网格坐标来摆放控件 |
5、基本上使用tkinter来开发GUI应用需要以下5个步骤:
- 导入tkinter模块中我们需要的东西。
- 创建一个顶层窗口对象并用它来承载整个GUI应用。
- 在顶层窗口对象上添加GUI组件。
- 通过代码将这些GUI组件的功能组织起来。
- 进入主事件循环(main loop)。
下面的代码演示了如何使用tkinter做一个简单的GUI应用。
import tkinter
import tkinter.messagebox
def main():
flag = True
#修改标签上的字
def change_label_text():
nonlocal flag
flag = not flag
color,msg = ('red','hello world!')\
if flag else ('blue','Goodbye world!')
label.config(text=msg,fg=color)
#确认退出
def confirm_to_quit():
if tkinter.messagebox.askokcancel('温馨提示','确认要退出吗?'):
top.quit()
#创建顶层窗口
top = tkinter.Tk()
#设置窗口大小
top.geometry('240x160')
#设置标题
top.title('小游戏')
#创建标签对象并添加到顶层窗口中
label = tkinter.Label(top,text='Hello,world!',font='Arial -32',fg='red')
label.pack(expand=1)
#创建一个装按钮的容器
panel = tkinter.Frame(top)
#创建按钮对象,指定添加到那个容器中,通过command参数绑定事件回调函数
button1 = tkinter.Button(panel,text='修改',command=change_label_text)
button1.pack(side='left')
button2 = tkinter.Button(panel,text='退出',command=confirm_to_quit)
button2.pack(side='right')
panel.pack(side='bottom')
#开启主事件循环
tkinter.mainloop()
if __name__ == "__main__":
main()
效果如下:
如果大家想进一步的深入学习;推荐官方文档,英文的!也可以练习英语!
参考:tkinter---Tcl/Tk的python接口