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. 基于Google Reader的个人知识管理方案
  2. 【转】×××精确校验JS
  3. Javascript网站繁简转换解决方案
  4. Html5中新增的表单元素详解
  5. 疑似小米11系列旗舰跑分曝光:骁龙875性能突破天际
  6. linux 如何自定义安装路径,Linux下安装mysql并自定义数据的存储路径
  7. 庖丁解牛获取连接状态数的awk数组命令
  8. 数据库MySQL/mariadb知识点——操作篇(4)数据操作语句
  9. java 操作linux_java程序里调用linux命令
  10. 初学C++——VS2013开发工具包下载及破解
  11. HTML鼠标移到a上面让a变色
  12. 医学超声成像—合成孔径法(Synthetic Aperture Methods)[1]
  13. 玩游戏计算机配置,电脑玩游戏主要看什么配置 玩大型游戏电脑配置推荐
  14. Extjs案例---后台管理系统界面布局
  15. 阿里云ECS云服务器Linux Tomcat启动慢 访问网页转圈
  16. linux PWM驱动屏幕亮度及pwm子系统框架(Linux驱动开发篇)
  17. 374. Guess Number Higher or Lower*
  18. Python是什么?一篇文章带你全面了解Python
  19. Navicat可视化界面导入SQL文件生成数据库表
  20. 0xc000007b应用程序无法正常启动,dll损坏

热门文章

  1. 蓝桥杯_算法基础练习week-practice
  2. 用Python爬取英雄联盟所有皮肤~隔壁小孩羡慕的哭了
  3. UI设计中引导页设计指南
  4. js延迟执行dom操作(函数节流)
  5. Mac系统安装Navicat Premium数据库与汉化
  6. 观察者模式:微博关注通知功能(二)
  7. 一份银行流水数据,因打印模糊导致部分金额不清楚。
  8. CLR20r3错误 问题定位与解决
  9. 北航计算机考研黑书,北京师范大学计算机软件及理论2022考研招生分析、参考书、真题等复习指导解析...
  10. 修改Tortoisegit用户名、密码