Python自带支持Tk的Tkinter,无需安装任何包,就可以直接使用。Tkinter封装了访问Tk的接口,Tk是一个图形库,支持多个操作系统,使用Tcl语言开发。Tk会调用操作系统提供的本地GUI接口,完成最终的GUI。

先看例子:


#file  tkintertest.py
#python  自带的图形界面学习
import  tkinter  as  tk
import  tkinter.messagebox  as  messagebox

class  Application(tk.Frame):
        def  __init__(self,  master=None):
                super().__init__(master)
                self.pack()
                self.createWidgets()

def  createWidgets(self):
                self.nameInput  =tk.Entry(self,bg='yellow')
                self.nameInput.pack(padx=20,pady=30)
                self.helloLabel  =  tk.Label(self,  text='你好,世界!',bg='pink',fg='green')
                self.helloLabel.pack(side="top")
                self.alertButton  =  tk.Button(self,  text='你好',  command=self.hello)
                self.alertButton.pack()
                self.quitButton  =  tk.Button(self,  text='退出',  fg='red',command=root.destroy)
                self.quitButton.pack(side="bottom")
                li          =  ['C','python','php','html','SQL','java']
                movie    =  ['CSS','jQuery','Bootstrap']
                self.listb    =  tk.Listbox(self)                    #    创建两个列表组件
                self.listb2  =  tk.Listbox(self)
                for  item  in  li:                                  #  第一个小部件插入数据
                        self.listb.insert(0,item)

for  item  in  movie:                            #  第二个小部件插入数据
                        self.listb2.insert(0,item)

self.listb.pack(side="left")                                        #  将小部件放置到主窗口中
                self.listb2.pack(side="right")

def  hello(self):
                name  =  self.nameInput.get()  or  '世界'
                messagebox.showinfo('Message',  '你好,  %s  !'  %  name)

root=tk.Tk()
app  =  Application(master=root)
#  设置窗口标题:
app.master.title('你好,世界!')
app.master.maxsize(1000,400)

#  主消息循环:
app.mainloop()

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

控件                  描述
Button              按钮控件;在程序中显示按钮。
Canvas              画布控件;显示图形元素如线条或文本
Checkbutton    多选框控件;用于在程序中提供多项选择框
Entry                输入控件;用于显示简单的文本内容
Frame                框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Label                标签控件;可以显示文本和位图
Listbox            列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton      菜单按钮控件,由于显示菜单项。
Menu                  菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message            消息控件;用来显示多行文本,与label比较类似
Radiobutton    单选按钮控件;显示一个单选的按钮状态
Scale                范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar        滚动条控件,当内容超过可视化区域时使用,如列表框。.
Text                  文本控件;用于显示多行文本
Toplevel          容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox            输入控件;与Entry类似,但是可以指定输入范围值
PanedWindow    是一个窗口布局管理的插件,可以包含一个或者多个子控件。
LabelFrame      是一个简单的容器控件。常用与复杂的窗口布局。
tkMessageBox  用于显示你应用程序的消息框。

二、布局
      
        1、pack()

pack()有以下几个常用属性:side、padx、pady、ipadx、ipady、fill、expand

1.1、side
        side属性有四个可选值:'top'、'bottom'、'left'、'right',分别表示将控件位置设在窗口顶部中心、底部中心、左边中心、右边中心。side默认值为'top'。

1.2、padx、pady、ipadx、ipady
        这四个属性分别设置控件水平方向外边距、竖直方向外边距、水平方向内边距、竖直方向内边距。

1.3、fill
        fill属性有四个可选值:'none'、'x'、'y'、'both'。分别表示不填充、将控件沿水平方向填充、将控件沿竖直方向填充、将控件沿水平和竖直方法填充。
        当side属性被设为'top'、'bottom'时,fill只能沿水平方向填充;当side属性被设为'left'、'right'时,fill只能沿竖直方向填充。

1.4、expand
        expand属性有两个可选值:0、1(或者'yes'、'no')。expand默认值为0。
        当expand属性为0时,前面所说的side、fill一切正常;当expand属性为1时,side属性无效,此时控件会在窗口中心位置,且fill既可沿水平方向填充,也可沿竖直方向填充。

2、grid()

grid()有以下几个常用属性:row、column、padx、pady、ipadx、ipady、rowspan、columnspan、sticky

2.1、row、column

grid()将窗口看做一张表格,将控件放在其中的单元格中,而row、column则用来设置控件所在单元格的坐标。
例如:

#file:tkintertest2.py
import  tkinter  as  tk
window  =  tk.Tk()
window.title('tkinter测试')
window.geometry('400x400')

btn1  =  tk.Button(window,text='按钮一',width=5,bg='green')
btn1.grid(row=0,column=0,rowspan=1,columnspan=2,sticky='W'+'N'+'S'+'E')

btn2  =  tk.Button(window,text='按钮二',width=5,height=5,bg='red')
btn2.grid(row=0,column=2)

btn3  =  tk.Button(window,text='按钮三',width=3,height=3,bg='blue')
btn3.grid(row=1,column=1)

btn4  =  tk.Button(window,text='按钮四',width=15,height=10,bg='yellow')
btn4.grid(row=1,column=2)

window.mainloop()

单元格的宽度、高度是由同一列中最宽、同一行中最高的控件的宽高决定的。

2.2、padx、pady、ipadx、ipady

这四个属性分别设置控件水平方向外边距、竖直方向外边距、水平方向内边距、竖直方向内边距。

2.3、rowspan、columnspan

有时候,一个控件可能会占用不止一个单元格,这时就要用到rowspan、columnspan,他们的作用与合并单元格类似。
rowspan=3表示该控件会在竖直方向占用3行单元格;column=3则报表时该控件会在水平方向占用3列单元格。

2.4、sticky

sticky属性用于设置控件的对齐方式,其可选值有'N'、'S'、'E'、'W'以及这四个值的各种组合。

当stick属性的值为这四个方向中的一个时,控件会向相应方向对齐;当stick属性的值为其中两个时,控件会向相应的一个角对齐;当stick属性的值为其中三个、四个时,控件会先向前两个设定的方向对齐,然后向后两个方向进行填充。

3、place()

place()有以下几个常用属性:x、y、relx、rely、anchor

3.1、x、y
        x、y属性用来设置控件的绝对坐标。

3.2、relx、rely
        relx、rely属性用来设置控件的相对坐标,范围为0-1。
        可以同时使用相对坐标和绝对坐标,此时先根据相对坐标确定控件位置,然后根据绝对坐标使控件进行偏移,最后确定控件的最终位置。

3.3、anchor
        anchor属性有9个可选值,分别表示9个方向,用来设置控件的锚点。
        NW,    N,    NE
        W,CENTER,E
        SW,    S,    SE
        例如,anchor='nw',x=100,y=100表示控件的左上角将在坐标(100,100)处,而anchor='n',x=100,y=100表示控件的顶边中点将在坐标(100,100)处。

4、Frame()

Frame()本身是tkinter中的一类控件,用来帮助我们进行布局。

 

Python标准库中的Tkinter模块相关推荐

  1. 细数python标准库中低调的模块

    有没有遇到过这种情况,在网络上搜索如何使用Python进行某种操作,最终找到一个第三方库,直到后来发现标准库中包含的模块或多或少都可以满足你的需求.这种情况并不罕见, 整理了一些python标准库中鲜 ...

  2. Python标准库中的os模块

     Python的标准库中的os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux ...

  3. Python标准库中的pickle模块

     pickle  -  Python对象序列化. pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议."pickle"是将Python对象层次结构转换为 ...

  4. Python标准库中的marshal模块

     marshal-内部的Python对象序列化 该模块包含可以以二进制格式读取和写入Python值的函数.该格式是针对Python的,但独立于机器架构问题(例如,您可以将Python值写入PC上的 ...

  5. Python标准库中的logging模块

          1.将日志输出到屏幕 import  logging logging.debug('This  is  debug  message') logging.info('This  is  ...

  6. Python标准库中的re模块

           Python  的  re  模块(Regular  Expression  正则表达式)提供各种正则表达式的匹配操作,在文本解析.复杂字符串分析和信息提取时是一个非常有用的工具. ...

  7. Python标准库中os模块的environ获取系统的环境变量

    应用背景:我们想要用Python获取到一些有关系统的各种环境变量信息的时候可以考虑使用Python标准库中的os模块的environ.什么是环境变量,环境变量是程序和操作系统之间的通信方式.有些字符不 ...

  8. Python标准库中的zipfile

    例如在E盘的demo目录下面存在下述三个文件: 将demo目录进行压缩后,在E盘的跟目录下面就会多了一个demo.zip文件 如果我们想获取demo.zip压缩文件里面的上述三个文件,在已知文件路径的 ...

  9. Python标准库中的io

    Python标准库中io模块中有两个比较重要的组成部分:StringIO.BytesIO 1.StringIO StringIO 的作用是在内存中读写字符串,其示例代码如下: from io impo ...

最新文章

  1. Ajax.net显示错误信息
  2. Mybatis 学习日记(1)
  3. git push -u origin master 上传出错问题
  4. Cortex-M3-建立向量表
  5. 第03讲. 原理探究,了解爬虫的基本原理
  6. Linux下CURL设置请求超时时间
  7. WordPress程序备受喜爱的原因:十八般武艺
  8. 【报告分享】2020直播电商生态白皮书.pdf(附下载链接)
  9. jsp页面struts2标签展示clob类型的数据
  10. 1223. Chernobyl’ Eagle on a Roof(dp)poj3783
  11. 数据结构 (一) ----- 数据结构基本概念基于数组实现线性表
  12. linux服务器内存占用太高-释放内存
  13. 如何在ogre游戏界面添加自己的信息,比如显示某变量的值
  14. Ubuntu16.04使用时的一些问题总结
  15. matlab 各版本下载地址
  16. 计算机组成原理微指令课程设计,计算机组成原理课程设计(微程序设计) New.doc...
  17. JAVA在线考试系统毕业设计 开题报告
  18. css 固定定位失效问题 position: fixed
  19. 关于对-rw-r--r-- 的详细讲解
  20. 用JavaScript写的简单本地视频播放器

热门文章

  1. 电机整流器,维也纳整流器 VIENNA(维也纳)整流器模型
  2. js事件委托及其原理
  3. java 学生简易登录,注册管理系统
  4. Html中label标签的用处
  5. Android 简易画板
  6. MFC SetWindowPos 窗口 的 Z 序
  7. Vue2-editor 富文本编辑器
  8. 微信公众号JSAPI分享功能踩坑记录
  9. 环信直播php怎么生成推流地址,使用Nginx实现简单的RTMP推流直播笔记
  10. OPPO FindN无法安装Charles证书