1.创建窗口

import tkinter as tk

window = tk.Tk()
window.title('my window')
window.geometry('300x100')
----------------------
# 你的其他部件
----------------------
window.mainloop()

这样我们一个窗口就形成了,接下来我们要为窗口添加一些部件

在这里需要解释一下mainloop()这个函数,程序的运行是由上到下逐行运行的。当他运行到mainloop是就会卡住,等待你的动作例如你按下了button,他就会跳到button的函数执行,完毕后就会回到mainloop。我们可以形象的描述成,所有部件都生成了之后,mianloop就会监听这整个window上的变化,一旦有了操纵就会执行。

2. label

l = tk.Label(window, textvariable=var,font=('Arial', 12), bg='green', width=15, height=2)

我们可以看见其中的参数(font 是字体, bg是背景, width和height是宽度和高度单位是字长)

一般来说我们的label 的 text 是固定的 ,但是我们把label改成了textvariable之后就可以使用,tk的变量在后面改变值了。因为我们上面说了,mainloop会监听变化,但是label已经生成且没有外部操作(例如button和radiobutton可以接收外界控制),所有按理来说label的text是不会变的,我们想要让他变化就可以把text=改为textvariable=就可以接收变量了。但是这个变量什么随意一个变量,是需要我们提前定义的

eg:

var = tk.StringVar()

需要注意,这个var一定要在使用的窗口生成之后生成,也就是 window = tk.Tk()的下面。

最后我们需要把生成的label放到window上去

l.pack()

pack是从上往下放。

3.button

b = tk.Button(window, text='hit me', command = hit_me, width = 10, height = 3)

button的第一个参数是这个button所在的窗口。 text是button上的提示信息,command是点击这个button之后执行的操作(函数)

eg:

hit_var = True
def hit_me():
global hit_var
if hit_var == False:
var.set('you hit me')
hit_var = True
else:
hit_var = False
var.set(' ')

由于我们的tk变量不同,在tk里面变量存在class里面所以我们想给tk变量设置值的时候就需要

var.set(" **")

自然,在取text信息的时候

a = var.get()

即可

最后pack() 一下就好了

4.listbox

listbox是一个菜单盒,里面提供了许多的选项

var2 = tk.StringVar()
var2.set(['wo', 'cao', 'ni', 'mei', '点我']) # 列表传值
ListBox = tk.Listbox(window, listvariable=var2)

这样我们就给里面设置了初始值了。如果我们后面的操作需要改变里面的值我们还可以后期这样修改

ListBox.insert('end', 'wocao')  # 选项传值往end传值
ListBox.insert(1, 'first')  #在下标为1的地方插入一个insert
ListBox.delete(1) # 删除下标为1的var

为listbox的值的增删都做好了那我们要如何获取到选中的值呢

vale = ListBox.get(ListBox.curselection())

这句话是get 鼠标选择的的text。

也要记得pack哦

5.Entry

entry 是一个提供输入的框。

e = tk.Entry(window)
var = e.get()

这样我们就可以获得entry里面的text了。

6.text

text是一个文本框

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

我们在text里面插入字符串的时候可以

t.insert('insert', var)
 t.insert('end', var)

选择插入的模式插入end和insert(光标位置插入)

7.radiobutton

多个选项选一个

val = tk.StringVar()
def point_choose():
l.config(text='you choose:'+val.get()) rb = tk.Radiobutton(window, text='Point A', variable=val, value='A', command=point_choose)
rb.pack()
rb2 = tk.Radiobutton(window, text='Point B', variable=val, value='B', command=point_choose)
rb2.pack()

这个radio button的大致意思是,把“A”存入其中,当选择了后把变量赋值给val

l.config可以冲置l里面的设置里面本身不能改变的参数

8.scale

scale尺度的意思

s = tk.Scale(window, label='try me', from_=0, to=10, tickinterval=10, orient=tk.HORIZONTAL,
length=200, showvalue=0, resolution=0.01,
command=try_me)

label是scale的标签, from_=0,to=10,是说范围从0到10刻度长度为10,

需要注意的是scale会自动给command传递变量,也就是将当前的数值当作变量传入就去

def try_me(v):
print(v)

9.checkbuton

checkbutton是复式选项 可以选择多个

cb1 = tk.Checkbutton(window, text='Python', variable=val, onvalue=1, offvalue=0, command=print_selection)
cb2 = tk.Checkbutton(window, text='C++', variable=val2, onvalue=1, offvalue=0, command=print_selection)
cb1.pack()
cb2.pack()

我们将变量val传入就去,当勾选了之后onvalue的值就会传给val,未勾选就会传入offvalue

所以我们使用的话就可以

def print_selection():
if val.get() == 1 and val2.get() == 1:
l.config(text='you like Python and C++')
print(val,type(val),val2)
elif val2.get() == 1 and val.get() == 0:
l.config(text='you only like C++')
elif val2.get() == 0 and val.get() == 1:
l.config(text='you only like Python')
else:
l.config(text='you do not like anymore')

象这样做一个判断语句了,因为只要点击的选项就会执行一次command的程序

10.canvas

canvas(画布)可以支持我们在上面作图,画正方形上面的,贴图什么的

_canvas = tk.Canvas(window, bg='blue', height=100, width=200)
_canvas.pack()

这样我们就创建了一个画布,然后我们在画布上放一张图片试试看(貌似只能放GIF格式的)

image_tk = tk.PhotoImage(file='ins.gif')
image = _canvas.create_image(0, 0, anchor='nw', image=image_tk)

接下来是画图

rect = _canvas.create_rectangle(50, 50, 20, 20)
line = canvas.create_line(x0, y0, x1, y1)
oval = canvas.create_oval(x0, y0, x1, y1, fill='red') #创建一个圆,填充色为`red`红色
arc = canvas.create_arc(x0+30, y0+30, x1+30, y1+30, start=0, extent=180) #创建一个扇形
rect = canvas.create_rectangle(100, 30, 100+20, 30+20) #创建一个矩形

甚至我们还可以让图形移动

    _canvas.move(rect, 0, 2)  # 2是y 0 是x

只要我们在加两个button,就可以做出交互了

11.menubar

menubar是菜单选项

##创建一个菜单栏,这里我们可以把他理解成一个容器,在窗口的上方
menubar = tk.Menu(window) ##定义一个空菜单单元
filemenu = tk.Menu(menubar, tearoff=0) ##将上面定义的空菜单命名为`File`,放在菜单栏中,就是装入那个容器中
menubar.add_cascade(label='File', menu=filemenu) ##在`File`中加入`New`的小菜单,即我们平时看到的下拉菜单,每一个小菜单对应命令操作。
##如果点击这些单元, 就会触发`do_job`的功能
filemenu.add_command(label='New', command=do_job)
filemenu.add_command(label='Open', command=do_job)##同样的在`File`中加入`Open`小菜单
filemenu.add_command(label='Save', command=do_job)##同样的在`File`中加入`Save`小菜单 filemenu.add_separator()##这里就是一条分割线 ##同样的在`File`中加入`Exit`小菜单,此处对应命令为`window.quit`
filemenu.add_command(label='Exit', command=window.quit)

12.messagebox

首先我们需要在导入模块

import tkinter as tk
from tkinter import messagebox

里面方法有

tk.messagebox.showinfo(title='Hi', message='hahahaha')
tk.messagebox.showinfo(title='',message='')#提示信息对话窗
tk.messagebox.showwarning()#提出警告对话窗
tk.messagebox.showerror()#提出错误对话窗
tk.messagebox.askquestion()#询问选择对话窗
print(tk.messagebox.askquestion())#返回yes和no
print(tk.messagebox.askokcancel())#返回true和false
print(tk.messagebox.askyesno())#返回true和false
print(tk.messagebox.askretrycancel())#返回true和false

开启另外一个窗口  因为这个在window上所有不需要mainloop

student_data = tk.Toplevel(window)
student_data.geometry('200x300')
student_data.title('student')

python之《tkinter》的更多相关文章

  1. Python利用pandas处理Excel数据的应用

    Python利用pandas处理Excel数据的应用   最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...

  2. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  3. 基于 Python 和 Pandas 的数据分析(4) --- 建立数据集

    这一节我想对使用 Python 和 Pandas 的数据分析做一些扩展. 假设我们是亿万富翁, 我们会想要多元化地进行投资, 比如股票, 分红, 金融市场等, 那么现在我们要聚焦房地产市场, 做一些这 ...

  4. 基于 Python 和 Pandas 的数据分析(2) --- Pandas 基础

    在这个用 Python 和 Pandas 实现数据分析的教程中, 我们将明确一些 Pandas 基础知识. 加载到 Pandas Dataframe 的数据形式可以很多, 但是通常需要能形成行和列的数 ...

  5. 基于 Python 和 Pandas 的数据分析(1)

    基于 Python 和 Pandas 的数据分析(1) Pandas 是 Python 的一个模块(module), 我们将用 Python 完成接下来的数据分析的学习. Pandas 模块是一个高性 ...

  6. python安装pandas和lxml

    一.安装python 二.安装pip 三.安装mysql-connector(window版):下载mysql-connector-python-2.1.3,解压后进入目录,命令安装:pip inst ...

  7. python之pandas用法大全

    python之pandas用法大全 更新时间:2018年03月13日 15:02:28 投稿:wdc 我要评论 本文讲解了python的pandas基本用法,大家可以参考下 一.生成数据表1.首先导入 ...

  8. python之pandas简单介绍及使用(一)

    python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...

  9. Python数据分析--Pandas知识点(二)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表 ...

  10. Python之Pandas中Series、DataFrame

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

随机推荐

  1. 【并查集】BZOJ 1854 连续攻击游戏

    题目内容 洛谷链接 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并 ...

  2. vue任意关系组件通信与跨组件监听状态 vue-communication

    大家好!我是木瓜太香! 众所周知,组件式开发方式给我们带来了方便,不过也引入了新的问题,组件之间的数据就像被一道无形的墙隔开,如果我们希望临时让两个组件直接通信,vuex 太巨,而 $emit 又不好 ...

  3. VMware虚拟机中共享文件夹 开机启动

    输入命令: sudo /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000 -o umask=02 ...

  4. spring boot:用itextpdf处理pdf表格文件(spring boot 2.3.2)

    一,什么是itextpdf? 1,itextpdf的用途 itextpdf是用来生成PDF文档的一个java类库, 通过iText可以生成PDF文档, 还可以把XML/Html文件转化为PDF文件 2 ...

  5. linux(centos8):使用cgroups做资源限制

    一,什么是cgroups? 1,cgroups是资源的控制组,它提供了一套机制用于控制一组特定进程对资源的使用.     cgroups绑定一个进程集合到一个或多个限制资源使用的子系统上. 2, cg ...

  6. scrapy数据写入管道

    1 setting里面启动管道 ITEM_PIPELINES = { 'ganji.pipelines.GanjiPipeline': 300,}2 拿到的数据通过yield返回给管道 # -*- c ...

  7. B站弹幕爬取

    B站弹幕爬取 单个视频弹幕的爬取 ​ B站弹幕都是以xml文件的形式存在的,而xml文件的请求地址是如下形式: http://comment.bilibili.com/233182992.xml ​ ...

  8. Java中四舍五入保留两位小数

    Java中四舍五入保留两位小数 方法一 四舍五入 double f = 3.15; long res = Math.round(f); #结果 res = 3 保留两位小数 double f = 3. ...

  9. ssh免密登陆 2

    应用场景之一:java 程序调用shell脚本,通过ssh 免密登陆数据库服务器,进行数据的抽取打包工作. 免密设置步骤: 1.客户端生成公私钥,在任意目录下执行命令ssh-keygen(一路回车默认 ...

  10. mapstruct 快速使用

    mapstruct 快速使用 mapstruct 主要的作用则是用来复制对象字段使用,功能非常的强大.在没有使用 mapstruct 之前可能都在使用 BeanUtils ,但是 BeanUtils ...