tkinter部件

一、Tk() & Label() & Button()

1,Tk() 窗口

用Tk()创建窗口对象:

#文件名:test1.py
import tkinter as tk
window = tk.Tk() #创建一个窗口对象window
window.title('my window') #设置window标题
window.geometry('400x400') #设置window大小

#中间填写window的内容

window.mainloop() #不断刷新窗口

效果如图:

2,Label() 标签

用Tk()创建窗口对象后,在窗口中用Label()创建标签对象

#文件名:test1.py
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('400x400')

#创建一个标签对象l
l = tk.Label(window, #使标签位于window中
    text='my label', #设置标签文字
    bg='green', #设置标签背景色
    font=('Arial',12), #设置标签文字字体字号
    width=15, #设置标签宽度,15表示15个字符的高度
    height=2) #设置标签高度,2表示2个字符的宽度
l.pack() #设置标签位置

window.mainloop()

效果如图:

3,Button() 按钮

再用Button()创建一个按钮对象:

#文件名:test1.py
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('400x400')

l = tk.Label(window,
    text='my label',
    bg='green',
    font=('Arial',12),
    width=15,
    height=2)
l.pack()

#创建一个按钮对象b
b = tk.Button(window, #使按钮位于window中
    text='my button', #设置窗口文字
    width=15, #设置窗口宽度
    height=2) #设置窗口高度
b.pack() #设置窗口位置

window.mainloop()

效果如图:

当然啦,按钮是拿来使用的,需要给按钮添加特定的功能。

这里我们给按钮添加一个简单的小功能:点击按钮,显示标签文字,再次点击按钮,隐藏标签文字,再次点击按钮,显示标签文字······

效果如下:



这需要在按钮的属性中添加command=hit,hit是一个函数,用来控制标签文字的显示与隐藏,command=hit的意思是点击按钮时将会执行hit函数。

接下来要定义hit函数,hit函数控制标签文字的显示与隐藏,那么可以将标签文字作为一个字符串变量,如果该变量为'my label',则点击时将其赋值为空字符串,如果该变量为空字符串,则点击时将其赋值为'my label'。

具体代码如下:

#文件名:test1.py
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('400x400')

var = tk.StringVar() #设置var为tk中的StringVar变量
l = tk.Label(window,
    textvariable=var, #设置标签文字为var,注意要把text改为textvariable
    bg='green',
    font=('Arial',12),
    width=15,
    height=2)
l.pack()

on_hit = False #设置变量on_hit用来表示标签文字状态,False表示空,True表示非空
def hit():
    global on_hit
    if on_hit == False: #如果标签文字为空
        var.set('my label') #将其设为'my label'
        on_hit = True #更新标签文字状态
    else: #否则
        var.set('') #将其设为空
        on_hit = False #更新标签文字状态

b = tk.Button(window,
    text='my button',
    width=15,
    height=2,
    command=hit) #点击时执行hit函数
b.pack()

window.mainloop()

效果如图:



我们在定义var时没有设置其初始值,因此一开始标签文字为空。如果要给var设置初始值'my label',可以在定义var的下一行写上var.set('my label'),注意不能在定义时直接设置初始值var = tk.StringVar().set('my label')

另外,var是tk中定义的StringVar变量,要用set方法赋值,不能写var = 'my label'

二、Entry() & Text()

1,Entry() 输入框

用Entry()创建一个输入框对象:

#文件名:test2.py
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('400x400')

#创建一个输入框对象e
e = tk.Entry(window, #使输入框位于window中
    show='*') #设置输入内容不可见,如果show=None则为可见,默认值为None
e.pack() #设置输入框位置

window.mainloop()

效果如图:

2,Text() 文本框

再用Text()创建一个文本框对象:

#文件名:test2.py
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('400x400')

e = tk.Entry(window,
    show='*')
e.pack()

#创建一个文本框对象t
t = tk.Text(window, #使文本框位于window中
    height=2) #设置文本框高度
t.pack() #设置文本框位置
window.mainloop()

效果如图:



文本框和输入框有些类似,也可以在里面输入文字。一般将输入框用于输入用户名、密码等情况,而文本框则用于输入大段文字。

接下来我们实现这样一个效果:在输入框中输入文字,点击按钮,文字插入到文本框中。且有两种插入方式,一种是将文字插入到光标所在位置,另一种是将文字插入到文本框中文字的结尾。效果如下:



首先我们需要添加两个按钮,并定义两个函数,分别完成上述两种不同插入方式。

具体代码如下:

#文件名:test2.py
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('400x400')

e = tk.Entry(window) #输入内容可见
e.pack()

def insert_point():
    var = e.get() #获得输入框e中的文字
    t.insert('insert',var) #将变量var插入文本框t中,'insert'表示从光标处插入
def insert_end():
    var = e.get()
    t.insert('end',var) #'end'表示从结尾处插入

b1 = tk.Button(window,
    text='insert_point',
    command=insert_point)
b1.pack()
b2 = tk.Button(window,
    text='insert_end',
    command=insert_end)
b2.pack()

t = tk.Text(window,
    height=2)
t.pack()
window.mainloop()

效果如图:



这里用insert方法实现了将文字插入文本框的两种不同方式,除了这里用到的'insert'、'end'外,还有一种更具体的插入方式t.insert(2.3,var),2.3表示将变量var插入到文本框的第2行第3列。

三、Listbox() 列表框

用Listbox()创建列表框对象:

#文件名:test3.py
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('400x400')

var1 = tk.StringVar() #设置var为tk中的StringVar变量
var1.set([11,22,33,44]) #将var初始化为列表
# 创建一个列表框对象
lb = tk.Listbox(window, #使列表框位于window中
    listvariable=var1) #设置列表框内容为var
# 下面介绍几个更改列表框内容的方法
list_item = [1,2,3,4]
for item in list_item: #通过循环将列表list_item的元素插入到列表框中
    lb.insert('end',item)
lb.insert(1,'first') #在列表框第1行插入'first'
lb.insert(2,'second') #在列表框第2行插入'second'
lb.delete(2) #将列表框第2行元素删除,下面的元素会依次填充上来
lb.pack()

window.mainloop()

效果如图:



要注意的是,前面我们直接设置标签内容时,写上text='my label,之后通过StringVar变量来间接设置标签内容时,则是写上textvariable=var

上面我们在给列表框设置内容时是通过StringVar变量间接设置的,可能你会觉得我们在给列表框设置内容时,也可以直接写上list=[11,22,33,44],但和text不同,list是关键字,因此不能这么做,只能采用间接方式。

此外,上面的列表也可以替换为元组。

接下来我们实现这样一个效果:选择列表框中的某行,点击按钮,该行内容便显示在标签上。效果如下:

#文件名:test3.py
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('400x400')

var1 = tk.StringVar()
l = tk.Label(window,
    textvariable=var1,
    bg='green',
    width=15,
    height=2)
l.pack()

def print_choose():
    value = lb.get(lb.curselection()) #获得列表框lb中被选中的内容,curselection也即cursor selection(鼠标选择)。
    var1.set(value) #将标签文字设为该内容

b = tk.Button(window,
    text='print choose',
    command=print_choose)
b.pack()

var2 = tk.StringVar()
var2.set([11,22,33,44])
lb = tk.Listbox(window,
    listvariable=var2)
lb.pack()

window.mainloop()

效果如图:

四、Radiobutton() 单选框

用Radiobutton()创建单选框对象:

#文件名:test4.py
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('400x400')

var = tk.StringVar()

#创建一组单选框对象
r1 = tk.Radiobutton(window, #使单选框对象位于window中
    text='选项A', #设置单选框文字
    variable=var, #将这组单选框与变量var关联,用var表示当前的选择状态
    value='A') #相当于每个单选框的id
r1.pack()
r2 = tk.Radiobutton(window,
    text='选项B',
    variable=var,
    value='B',)
r2.pack()
r3 = tk.Radiobutton(window,
    text='选项C',
    variable=var,
    value='C',)
r3.pack()
#r1、r2、r3都与变量var关联(var必须为全局变量),说明它们构成一组单选框,且var表示当前选中状态。
#当选中r1时,变量var被赋值为r1的value,表示当前value='A'的单选框被选中。由于r2、r3的value不是'A',因此r2、r3变为未选中状态。
#如果r1、r2的value相同,比如都为'A',当选中r1时,r2同时被选中,r3变为未选中状态。

window.mainloop()

效果如图:

接下来我们实现这样一个效果:点击一组单选框中的某一个,标签中显示出对应提示。

效果如下:



选中单选框时,关联变量会被赋值为单选框的value属性,因此,只需定义一个函数,在标签文字中加上关联变量的值即可。

具体代码如下:

#文件名:test4.py
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('400x400')

l = tk.Label(window,
    text='',
    bg='yellow',
    width=20)
l.pack()

var = tk.StringVar()
def print_choose():
    l.config(text='you have choose ' + var.get()) #使用config()可以设置对象的各项属性,这里我们将标签文字设为相应内容

r1 = tk.Radiobutton(window,
    text='选项A',
    variable=var,
    value='A',
    command=print_choose)
r1.pack()
r2 = tk.Radiobutton(window,
    text='选项B',
    variable=var,
    value='B',
    command=print_choose)
r2.pack()
r3 = tk.Radiobutton(window,
    text='选项C',
    variable=var,
    value='C',
    command=print_choose)
r3.pack()

window.mainloop()

效果如图:



在设置标签文字时,我们使用了text='you have choose ' + var.get(),这里不能直接将var与字符串'you have choose '连接。

【待解决的疑问】

上面例子中,单选框初始状态都是被选中,怎样将其初始状态改为未选中?

python tkinter学习——tkinter部件1的更多相关文章

  1. python GUI学习——Tkinter

    支持python的常见GUI工具包: Tkinter 使用Tk平台 很容易得到 半标准 wxpython 基于wxWindows.跨平台越来越流行 Python Win 只能在Windows上使用 使 ...

  2. Python Tkinter 学习成果:点歌软件music

    笔者工作业余时间也没什么爱好,社交圈子也小,主要娱乐就是背着自己带电瓶的卖唱音响到住地附近找个人多的位置唱唱KtV. 硬件上点歌就用笔记本电脑,歌曲都是网上下载的mkv格式的含有两个音轨的视频.因此点 ...

  3. python之GUI编程-tkinter学习

    推荐几个学习网址:https://www.cnblogs.com/shwee/p/9427975.html https://cloud.tencent.com/developer/section/13 ...

  4. Python Tkinter学习(1)——第一个Tkinter程序

    注:本文可转载,转载请注明出处:http://www.cnblogs.com/collectionne/p/6885066.html.格式修改未完成. Tkinter资料 Python Wiki, T ...

  5. Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)

    一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 二.Tkinter 是什么 三.Tkinter 控件详细介绍 1. T ...

  6. Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介

    Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...

  7. Python GUI编程(Tkinter)(一)

    tk官网的教程学习: https://tkdocs.com/tutorial/firstexample.html 学习blog: https://www.cnblogs.com/aland-1415/ ...

  8. 学习Tkinter

    tutorial point这个网站教程很多,无所不包.还包括一堆在线IDE,值得收藏 一.第一个tkinter程序 import tkinter top = tkinter.Tk() # Code ...

  9. Python GUI编程(Tkinter) windows界面开发

    Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py 1 #!C:\Python27\python.e ...

随机推荐

  1. 学习笔记TF030:实现AlexNet

    ILSVRC(ImageNet Large Scale Visual Recognition Challenge)分类比赛.AlexNet 2012年冠军(top-5错误率16.4%,额外数据15.3 ...

  2. python2.7 + selenium3.4.3浏览器的选择

    大家都知道,selenium2对火狐浏览器兼容性比较好,和谷歌和IE相比,好处是无需安装相应的driver.exe来支持启动浏览器,但是缺点是最高支持火狐47版本. 现在selenium3出来了,是不 ...

  3. npm的package.json字段含义中文文档

    简介 本文档有所有package.json中必要的配置.它必须是真正的json,而不是js对象. 本文档中描述的很多行为都受npm-config(7)的影响. 默认值 npm会根据包内容设置一些默认值 ...

  4. 【RegExp】JavaScript中正则表达式判断匹配规则以及常用方法

    字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符 ...

  5. html、js简单实现含中文csv文件下载(后端为django)

    1.在django  views.py中使用HttpResponse views.py首行加上utf-8编码,将默认unicode编码变为utf-8 # -*- coding:utf-8 -*- 下面 ...

  6. 求m区间内的最小值

    洛谷P1440 求m区间内的最小值 ............................................................................... 以上 ...

  7. HtmlCleaner CleanerProperties 参数配置(转自macken博客,链接:http://macken.iteye.com/blog/1579809)

    HtmlCleaner CleanerProperties 参数配置 Parameter Default Explanation advancedXmlEscape true If this para ...

  8. linux--软件包管理工具

    linux平台软件包管理: RPM/DPKG 两大阵营简介 在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM ...

  9. Java中parse()和valueOf(),toString()的区别

    1.parse()是SimpleDateFomat里面的方法,你说的应该是parseInt()或parsefloat()这种方法吧, 顾名思义 比如说parseInt()就是把String类型转化为i ...

  10. JavaScript实现的--贪吃蛇

    总的实现思路: 一.效果部分:  1.编写html代码,加上样式. 二.JavaScript部分:  1.利用dom方法创建一块草坪,即活动区域:   2.创建一条蛇,并设置其初始位置:       ...