写一个简单的界面很容易,即便是什么都不了解的状况下,这个文本转载了最简单的界面编写,下个文本介绍了TK的简单但具体的应用html
在python中建立一个窗口,而后显示出来。python
就3行就可以把主窗口显示出来了。root是一个变量名称,其表明了这个主窗口。之后建立控件的时候指定控件建立在什么窗口之中,就要用这个root来表示了。而Tk()是一个Tkinter库之中的函数(实际上是类的构造函数,构造了一个对象)。而mainloop则是主窗口的成员函数,也就是表示让这个root工做起来,开始接收鼠标的和键盘的操做。你如今就可以经过鼠标缩放以及关闭这个窗口了。注意到窗口的标题是tk,咱们能够进行一些修改web
而后窗口的标题就变成了bitunion了。下面要做的是把这个窗口的内容填充一下,让其有一些东西。先加入一个标签,所谓标签就是一行字。windows
咱们很惊讶的发现窗口变小了,可是其中多了一行字。变小了是由于窗口中已经放了东西了,python的Tkinter很是智能,可以根据内容自动缩放,而不用和传统的windows程序同样,手工的指定绝对坐标了。对于label,它仍是一个变量而已。不过这个变量表明了一个标签,也就是那一行字。而这个label的建立是用Label,而Label的参数是root代表了这个控件是root主窗口的成员控件,或者说是子窗口。label['text']表示设置这个标签的text属性为'be on your own',也就是文字内容了。label.pack和root.mainloop同样费解,可是内涵同样深入。你如今能够简单理解为把label显示出来的功能,由于你把pack去掉,那你就看不到东西了。其实pack是和控件的布局排版有关西的。
再添加一个按钮就可以有更加丰富的内容了,方法是很相似的。看着吧:app
只不过把button替换了label而Button替换了Label。注意一下Button和Label这些都是Tkinter这些库提供的,而button和Button这样大小写之间的差异仅仅是巧合,你可以随便的给变量取名字,可是Button和Label这些则是须要记住的东西,写代码的时候要常常用到的名字。可是点击按钮你会比较失望,由于并无什么反应。不过也是固然的事情,你并无告诉计算机对于这样一个按钮的点击操做须要做出一个什么样的反应来反馈给用户。而这个指定做出什么反应的工做只须要一个行,可是做出具体什么样反应的描述则须要新建一个函数来进行处理。框架
button['command'] = on_click表示对于button(按钮)的点击属性用on_click这个函数来处理。而on_click函数也很简洁,只是把label的文本从新设置一下。这个完成了一个事件消息的处理,若是用C来写,须要比这个长更加很差懂的写法。另外你是否会对on_click中出现label这个变量比较奇怪呢?明明在on_click前面没有定义label这个变量啊。若是我在C中这么写程序,编译器必定会告诉我出错的。而python是怎么知道label这个变量存在,而后没有报错的呢?其实python在你写的时候根本就不用知道其是否存在,只是要在运行的时候找获得label就能够了。而运行的先后关系,是经过时间来关联的而不是代码上先后行的关系。这里因为label = Label(root)先于on_click执行,因此当on_click执行的时候,label就是一个已经定义的变量。若是没有定义呢?那就报告出错喽。
最后一个例子:ide
这个就比较复杂了。里面有一个StringVar。这个表明一个字符串,可是跟通常字符串不同。通常的这样'dfsdf'的字符串是不可变的,你只能把变量指定为不一样的字符串,可是字符串自己的内容是不可改变的。而StringVar则是可变的字符串。因此了set和get来设置和取得其内容。主要是entry(单行输入框)要求一个这样的属性来设置和接收其输入框的内容。函数
用Tkinter实现一个简单的GUI程序,单击click按钮时会在终端打印出’hello world’:
工具
当咱们写一个较大的程序时,最好将代码分红一个或者是几个类,再看一下Hello World例子
oop
看完了上面两个无聊的Hello World例子,再来看一个稍微Perfect点的东西吧。Menu组件,本身画一个像样点的程序外壳。
这个程序仍是有点无趣,由于咱们只是建立了一个顶级的导航菜单,点击后只是在终端中输出hello而已,下面来建立一个下拉菜单,这样才像一个正儿八经的应用在下面的这个例子中,会建立三个顶级菜单,每一个顶级菜单中都有下拉菜单(用add_command方法建立,最后用add_cascade方法加入到上级菜单中去),为每一个下拉选项都绑定一个hello函数,在终端中打印出hello.
root.quit是退出这个Tk的实例。
写了这一些,差很少对Tkinter有了一个大致的印象了。在Python中用Tkinter绘制GUI界面仍是蛮简单的。再把上面的例子扩展一下,和Label标签结合,当单击about的时候,在窗体上打印About的内容,而不是在终端输出。将about函数稍微修改一下。单击about之后将会调用about函数渲染frame绘制一个标签并显示其内容。
|
def about(): w = Label(root,text="开发者感谢名单\nfuyunbiyi\nfyby还没有出现的女友\nhttp://www.programup.com网站") w.pack(side=TOP)
Tkinter的提供各类控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件一般被称为控件或者部件。
目前有15种Tkinter的部件。咱们提出这些部件以及一个简短的介绍,在下面的表:
控件 | 描述 |
Label | Label widget which can display text and bitmaps标签控件;能够显示文本和位图 |
Button | 按钮控件;在程序中显示按钮 |
Entry | Entry widget which allows to display simple text输入控件;用于显示简单的文本内容 |
Checkbutton | Checkbutton widget which is either in on- or off-state多选框控件;用于在程序中提供多项选择框 |
Listbox | Listbox widget which can display a list of strings.列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户 |
Scale | Scale widget which can display a numerical scale范围控件;显示一个数值刻度,为输出限定范围的数字区间 |
Spinbox | 输入控件;与Entry相似,可是能够指定输入范围值 |
Menu | Menu widget which allows to display menu bars, pull-down menus and pop-up menus菜单控件;显示菜单栏,下拉菜单和弹出菜单 |
Message | Message widget to display multiline text. Obsolete since Label does it too消息控件;用来显示多行文本,与label比较相似 |
OptionMenu | OptionMenu which allows the user to select a value from a menu.可选菜单控件;容许用户在菜单中选择值 |
Radiobutton | Radiobutton widget which shows only one of several buttons in on-state单选按钮控件;显示一个单选的按钮状态 |
Frame | Frame widget which may contain other widgets and can have a 3D border框架控件;在屏幕上显示一个矩形区域,多用来做为容器 |
Toplevel | Toplevel widget, e.g. for dialogs.容器控件;用来提供一个单独的对话框,和Frame比较相似 |
Text | Text widget which can display text in various forms文本控件;用于显示多行文本 |
Canvas | Canvas widget to display graphical elements like lines or text.画布控件;显示图形元素如线条或文本 |
Event | Container for the properties of an event.事件控件; |
标准属性也就是全部控件的共同属性,如大小,字体和颜色等等。
属性 | 描述 |
Dimension | 控件大小; |
Color | 控件颜色; |
Font | 控件字体; |
Anchor | 锚点; |
Relief | 控件样式; |
Bitmap | 位图; |
Cursor | 光标; |
几何管理:
Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,一下是Tkinter公开的几何管理类:包、网格、位置
几何方法 | 描述 |
pack() | 包装; |
grid() | 网格; |
place() | 位置; |