python - Tkinter 模块 - python 自带的gui模块
Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口,位Python的内置模块,直接import tkinter即可使用。
1.创建窗口
from Tkinter import * #引用Tk模块
root = Tk() #初始化Tk()
root.mainloop() #进入消息循环
几个常用属性
- title: 设置窗口标题
- geometry: 设置窗口大小
- resizable():设置窗口是否可以变化长 宽
2.模块详解
#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import * root = Tk()
root.title("test Tkinter") #### Text() ##################################################################################
root.geometry('300x100')
root.resizable(width=False,height=True) #============================================
# 向空间内输入文本 Text
#
# t = Text(根对象)
# 插入:t.insert(mark, 内容)
# 删除:t.delete(mark1, mark2)
# 其中,mark可以是行号,或者特殊标识
#============================================
t = Text(root)
t.insert(1.0, 'hello\n')
t.insert(END, 'hello000000\n')
t.insert(END, 'nono')
t.pack() #### Entry() ##################################################################################
root.geometry() #===================================================================
# 创建单行文本框 Entry
#
# 创建:lb =Entry(根对象, [属性列表])
# 绑定变量 var=StringVar() lb=Entry(根对象, textvariable = var)
# 获取文本框中的值 var.get()
# 设置文本框中的值 var.set(item1)
#===================================================================
var = StringVar()
e = Entry(root, textvariable = var)
var.set("hello")
e.pack() #### Listbox() ################################################################################
root.geometry() # ======================================================================
#
# 列表控件,可以含有一个或多个文本想,可单选也可多选 Listbox
# 创建:lb = ListBox(根对象, [属性列表])
# 绑定变量 var=StringVar() lb=ListBox(根对象, listvariable = var)
# 得到列表中的所有值 var.get()
# 设置列表中的所有值 var.set((item1, item2, .....))
# 添加:lb.insert(item)
# 删除:lb.delete(item,...) item为序号
# 绑定事件 lb.bind('<ButtonRelease-1>', 函数)
# 获得所选中的选项 lb.get(lb.curselection())
# selectmode可以为BROWSE MULTIPL SINGLE
# ======================================================================
def print_item(event):
print lb.get(lb.curselection())
var = StringVar()
lb = Listbox(root, listvariable=var)
list_item = [1,2,3,4]
for item in list_item:
lb.insert(END, item)
lb.delete(2,4) var.set(('a', 'ab', 'c', 'd'))
print var.get()
lb.bind('<ButtonRelease-1>', print_item)
lb.pack() #### Scrollbar ################################################################################
root.geometry() # ================================================================
# 滚动条控件,当内容超过可视化区域时使用,如列表框。
#
# Frame(根对象, [属性列表]), 最长用的用法是和别的控件一起使用.
# ================================================================
def print_item(event):
print lb.get(lb.curselection())
var = StringVar()
lb = Listbox(root, selectmode=BROWSE, listvariable=var)
lb.bind('<ButtonRelease-1>', print_item)
list_item = [1,2,3,4,5,6,7,8,9,0]
for item in list_item:
lb.insert(END, item) scrl = Scrollbar(root)
scrl.pack(side=RIGHT, fill=Y)
lb.configure(yscrollcommand=scrl.set)
lb.pack(side=LEFT, fill=BOTH)
scrl['command'] = lb.yview # 进入消息循环
root.mainloop()
3.pack 函数详解
'''''fill如何控制子组件的布局'''
# -*- coding: utf-8 -*-
# 不设置root的大小,使用默认
from tkinter import * root = Tk()
# 改变root的大小为80x80
root.geometry('80x80+0+0')
print(root.pack_slaves())
# 创建三个Label分别使用不同的fill属性
Label(root, text='pack1', bg='red').pack(fill=Y)
Label(root, text='pack2', bg='blue').pack(fill=BOTH)
Label(root, text='pack3', bg='green').pack(fill=X)
print(root.pack_slaves())
root.mainloop()
# 第一个只保证在Y方向填充,第二个保证在XY两个方向上填充,第三个不使用填充属性,
# 注意Pack只会吝啬地给出可以容纳这三个组件的最小区域,它不允许使用剩余的空间了,故下方留有“空白”。
'''''expand如何控制组件的布局'''
# -*- coding: utf-8 -*-
# 这个属性指定如何使用额外的空间,即上例中留下来的“空白”
from tkinter import * root = Tk()
# 改变root的大小为80x80
root.geometry('80x80+0+0')
print(root.pack_slaves())
# 创建三个Label分别使用不同的fill属性
Label(root, text='pack1', bg='red').pack(fill=Y, expand=1)
Label(root, text='pack2', bg='blue').pack(fill=BOTH, expand=1)
Label(root, text='pack3', bg='green').pack(fill=X, expand=0)
print(root.pack_slaves())
root.mainloop()
# 第一个只保证在Y方向填充,第二个保证在XY两个方向上填充,第三个不使用填充属性,
# 这个例子中第一个Label和第二个Label使用了expand = 1属性,而第三个使用expand = 0属性,改变root的大小,
# 可以看到Label1和Label2是随着root的大小变化而变化(严格地它的可用空间在变化),第三个只中使用fill进行X方向上的填充,不使用额外的空间。
'''''改变组件的排放位置'''
# 使用side属性改变放置位置
# -*- coding: utf-8 -*-
from tkinter import * root = Tk()
# 改变root的大小为80x80
root.geometry('80x80+0+0')
print(root.pack_slaves())
# 创建三个Label分别使用不同的fill属性,改为水平放置
# 将第一个Label居左放置
Label(root, text='pack1', bg='red').pack(fill=Y, expand=1, side=LEFT)
# 将第二个Label居右放置
Label(root, text='pack2', bg='blue').pack(fill=BOTH, expand=1, side=RIGHT)
# 将第三个Label居左放置,靠Label放置,注意它不会放到Label1的左边
Label(root, text='pack3', bg='green').pack(fill=X, expand=0, side=LEFT)
print(root.pack_slaves())
root.mainloop()
# 第一个只保证在Y方向填充,第二个保证在XY两个方向上填充,第三个不使用填充属性,这个例子中第一个Label和第二个Label使用了expand = 1属性,
# 而第三个使用expand = 0属性,改变root的大小,可以看到Label1和Label2是随着root的大小变化而变化(严格地它的可用空间在变化),
# 第三个只中使用fill进行X方向上的填充,不使用额外的空间。
'''''设置组件之间的间隙大小'''
# ipadx设置内部间隙
# padx设置外部间隙
# -*- coding: utf-8 -*-
# 不设置root的大小,使用默认
from tkinter import * root = Tk()
# 改变root的大小为80x80
# root.geometry('80x80+0+0')
print(root.pack_slaves())
# 创建三个Label分别使用不同的fill属性,改为水平放置
# 将第一个LabelFrame居左放置
L1 = LabelFrame(root, text='pack1', bg='red')
# 设置ipadx属性为20
L1.pack(side=LEFT, ipadx=20)
Label(L1,
text='inside',
bg='blue'
).pack(expand=1, side=LEFT)
L2 = Label(root,
text='pack2',
bg='blue'
).pack(fill=BOTH, expand=1, side=LEFT, padx=10)
L3 = Label(root,
text='pack3',
bg='green'
).pack(fill=X, expand=0, side=LEFT, pady=10)
print(root.pack_slaves())
root.mainloop()
# 为了演示ipadx/padx,创建了一个LabelFrame设置它的ipadx为20,即内部间隔值为20,
# 它的子组件若使用则会留出20个单位;Label2和Label3分别设置x和y方向上的外部间隔值,所有与之排列的组件会与之保留10个单位值的距离
4.PaneWindow 详解
from Tkinter import * #### PanedWindow #####################################################################
# PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
# 用户可以用鼠标移动上面的分割线来改变每个子控件的大小。 PanedWindow可以用来创建2格或者3格的布局。
m1 = PanedWindow()
m1.pack(fill=BOTH, expand=1) left = Label(m1, text="left pane", bg="red")
m1.add(left) m2 = PanedWindow(m1, orient=VERTICAL)
m1.add(m2) top = Label(m2, text="top pane", bg="blue")
m2.add(top) bottom = Label(m2, text="bottom pane", bg="yellow")
m2.add(bottom) mainloop()
参考自:
Tkinter 说明:http://www.runoob.com/python/python-gui-tkinter.html
Tkinter 内容详解:https://www.cnblogs.com/kaituorensheng/p/3287652.html
pack 函数详解:http://blog.csdn.net/aa1049372051/article/details/51886909
python - Tkinter 模块 - python 自带的gui模块的更多相关文章
- python的部分GUI模块简介tkinter、pyqt5(Qt Designer)
笔者认为,这两个作为Python3较为常用且简单的GUI模块,是Python开发者所必须学习至少是了解的. 其中tkinter为Python3自带的GUI模块,而pyqt5则需要通过pip insta ...
- Python内建GUI模块Tkinter(一)
Python主窗口 Python特定的GUI界面,是一个图像的窗口,tkinter是python自带的,可以编辑的GUI界面,我们可以用GUI实现很多一个直观的功能,如何想开发一个计算器,如果只是一个 ...
- 菜鸟试做GUI简单数据库查询界面 python+tkinter+mysql
一.准备工作: 1.安装mysql3.7,创建一个test数据库,创建student表,创建列:(列名看代码),创建几条数据 (以上工作直接用navicat for mysql工具完成) 二.代码: ...
- Windows下用Python 3.4+自带的venv模块创建虚拟环境
Python 3.4+自带了venv模块,用于创建虚拟环境,每个虚拟环境都可以安装一套独立的第三方模块. 本文在Windows 10上操作. 1.创建一个虚拟环境: D:\>mkdir test ...
- Python自带的hmac模块
Python自带的hmac模块实现了标准的Hmac算法 我们首先需要准备待计算的原始消息message,随机key,哈希算法,这里采用MD5,使用hmac的代码如下: import hmac mess ...
- python gui tkinter快速入门教程 | python tkinter tutorial
本文首发于个人博客https://kezunlin.me/post/d5c57f56/,欢迎阅读最新内容! python tkinter tutorial Guide main ui messageb ...
- Python tkinter模块弹出窗口及传值回到主窗口操作详解
这篇文章主要介绍了Python tkinter模块弹出窗口及传值回到主窗口操作,结合实例形式分析了Python使用tkinter模块实现的弹出窗口及参数传递相关操作技巧,需要的朋友可以参考下 本文实例 ...
- Python Tkinter 学习成果:点歌软件music
笔者工作业余时间也没什么爱好,社交圈子也小,主要娱乐就是背着自己带电瓶的卖唱音响到住地附近找个人多的位置唱唱KtV. 硬件上点歌就用笔记本电脑,歌曲都是网上下载的mkv格式的含有两个音轨的视频.因此点 ...
- 利用python+tkinter开发一个点名软件
最近上课学生多名字记不住,名册忘记了带,要点名怎么办,好久没有写代码了,于是自己写了个点名软件,记录下吧,第一次接触TK也不是太熟悉,写的不太好,记录下源代码 以后遇到要写桌面软件还是可以耍耍的. t ...
随机推荐
- jQuery改变元素class属性
//去掉class属性 $(this).parent('li').removeClass("prev_selected"); //去掉同兄弟的class属性. $(this).pa ...
- Maven项目构建利器03——第一个Maven工程
1.Maven工程的结构 我们需要通过Maven进行自动化构建, 以编译为例, Maven要想自动进行编译, 那么它必须知道Java源文件保存在哪里,所以要遵守Maven的约定,也就是约定大于配置,配 ...
- Java 接口和内部类
接口的方法默认死public,接口的属性默认为public static final. 为什么要接口,而不是使用抽象类.一个对象只能继承一个类,却可以实现多个接口. clone: Object的浅拷贝 ...
- python数据类型基础与解压缩
''' python数据类型基础与解压缩 ''' # a = 10 # b = 10 # c = 10 # 定义变量就是拿来用的, # 链式赋值 a = b = c = 10 print(a, b, ...
- ansj分词器使用记录
//最简单实例 String ruiec = “分词测试123456100名”; //剔除指定的分词 s.insertStopWords("100名"); //剔除标点符号(w) ...
- 移动端ios和安卓input问题
在钉钉开发微应用的时候. 安卓和苹果输入input框的时候.失去焦点和获取焦点会有明显的上下跳动 因此我用绝对定位把位置固定在一个地方.就不会有跳动
- linux服务器外网内网(双网络)搭建
一共有2台服务器,分别用a,b表示.a双网卡,即有外网也有内网.b只有内网环境.a,b的内网是通过交换机组建.至于外网怎么搭建我就不说了.关键说一说内网是怎么组建的. 如果你对linux不熟悉,对网卡 ...
- vue-router的路由
路由和组件是有区别的:组件一般是在同一个页面的不同模块,但是路由是直接切换到另一个页面,之前的页面销毁. App.vue中的router-view会渲染顶级路由匹配到的组件.组件内部嵌套的router ...
- Linux培训教程 linux中nl命令使用介绍
nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...
- sh_10_嵌套打印小星星
sh_10_嵌套打印小星星 # 需求 # # 在控制台连续输出五行 *,每一行星号的数量依次递增 # * # ** # *** # **** # ***** # 开发步骤 # # 1> 完成 5 ...