目录

文章目录

    • 目录
  • tkinter界面
    • thinter 控件
    • 公用属性
    • 几何管理
    • 简单应用
      • Lable 和 Button控件
      • Entry 和 Text控件
      • Listbox 选择列表
      • Radiobutton选择按钮
      • Scale尺度
      • Checkbutton多选表单
      • Canvas画布
      • Menubar菜单
      • Frame框架
      • messagebox弹窗

tkinter界面

thinter 控件

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

公用属性

属性 描述
Dimension 控件大小;
Color 控件颜色;
Font 控件字体;
Anchor 锚点;
Relief 控件样式;
Bitmap 位图;
Cursor 光标;

几何管理

几何方法 描述 用法
pack() 包装; 简单的四种方位确定
grid() 网格; 表格式确定
place() 位置; 坐标式确定

简单应用

基本流程:

创建窗口对象 —> 设置窗口title、宽高 —> 添加各种控件(为控件定义功能函数(变量等等))—> 装填控件

Lable 和 Button控件

import tkinter as tkwindow = tk.Tk()     #创建窗口对象
window.title('my window')  #设置界面标题
window.geometry('700x500')  #设置界面大小宽*高var = tk.StringVar()    #定义一个字符串变量
l = tk.Label(window,textvariable = var,bg = 'pink',font = ('Arial',12),width = 50, height = 25) #设置标签界面
l.pack()   #将小部件放到主窗口中on_hit = False
def hit_me():global on_hit      #定义一个全局变量if on_hit == False:on_hit = Truevar.set('你好哇,李银河!')  #设置var的值else:on_hit = Falsevar.set('')b = tk.Button(window, text='点我呀', width = 15, height = 2, command = hit_me) #设置一个按钮,command调用函数
b.pack()
window.mainloop()

Entry 和 Text控件

import tkinter as tkwindow = tk.Tk()
window.title('一个没有感情的复读机')
window.geometry('700x500')e = tk.Entry(window, show = None)  #,设置entry控件,show可以指定显示的字符如密码'*'
e.pack()def insert_this():var = e.get()t.insert('insert', var)
def insert_end():var = e.get()t.insert('end', var)
b1 = tk.Button(window, text='复读到这', width=15, height=2, command=insert_this)
b1.pack()
b2 = tk.Button(window, text='复读到文末', width=15, height=2, command=insert_end)
b2.pack()
t = tk.Text(window, height=2)     #设置Text控件
t.pack()
window.mainloop()   #运行并不断刷新界面

Listbox 选择列表

import tkinter as tk
window = tk.Tk()
window.title('你听过最浪漫的话是什么')
window.geometry('700x500')var1 = tk.StringVar()  #创建字符串变量
l = tk.Label(window, bg='#6f9dff', width=50, textvariable=var1)
l.pack()def print_selection():value = lb.get(lb.curselection())  #获取选择的值var1.set(value)  #将选择的值赋给var1(传入Lable控件)b1 = tk.Button(window, text='是这一句没错了', width=15, heigh=2, command=print_selection)
b1.pack()var2 = tk.StringVar()
str_1 = '祝你今天快乐,明天的快乐留着我明天祝'
str_2 = '漫天繁星像一场冻结了的大雨'
str_3 = '白天你的影子在你身边,夜晚影子化成无形的夜包裹着我的睡眠'
str_4 = '我将忤逆我的本能去爱你'
str_5 = '你快回来,我一人承受不来'
str_6 = '情长纸短,吻你万千'
var2.set((str_1, str_2, str_3))
lb = tk.Listbox(window, listvariable=var2, width=50) #定义一个选择列表
lb.pack()
list_items=(str_4,str_5,str_6)
for item in list_items:   #循环插入456选项值lb.insert('end', item)lb.insert(1,'不要点我~~~') #插入一个选项到第1位
lb.insert(2, '充数')
lb.delete(2)       #删除第二个选项
window.mainloop()

Radiobutton选择按钮

import tkinter as tkwindow = tk.Tk()
window.title('选一条唯美的句子吧')
window.geometry('500x250')l = tk.Label(window, bg='#abedc3', width=50, height=3, text='展示台')
l.pack()
def print_selection():l.config(text=var.get())  #更改Label标签中的text值为var.get()var = tk.StringVar()
r1 = tk.Radiobutton(window, text='OptionA', variable=var,
value='云朵偷喝了我放在屋顶上的酒于是她脸红变成了晚霞', command=print_selection)  #设置一个选择按钮
r1.pack()
r2 = tk.Radiobutton(window, text='OptionB', variable=var,
value='我们逃走吧,日暮,银河,别再梦里', command=print_selection)
r2.pack()
r3 = tk.Radiobutton(window, text='OptionC', variable=var,
value='秋天该很好,你若尚在场,秋风即使带凉,亦漂亮', command=print_selection)
r3.pack()window.mainloop()

Scale尺度

import tkinter as tk
window = tk.Tk()
window.title('一个尺度列表')
window.geometry('500x250')def print_selection(v):      #v是传入s表单的选择值l.config(text='大概是'+v+'年吧')s = tk.Scale(window, label='很久是多久', from_=1, to=10, orient=tk.HORIZONTAL, length=400, showvalue=0, tickinterval=2, resolution=1, command=print_selection)
'''
设置一个尺度表单,
orient是方向(HORIZONTAL是横向),
showvalue是实时显示选中的值(布尔型,0就是false),
tickinterval是表单划分尺度,
resolution是精度(1是精确到整数)
'''
s.pack()l = tk.Label(window, bg='yellow', width=20, height=2, text='empty')
l.pack()
window.mainloop()

Checkbutton多选表单

import tkinter as tkwindow = tk.Tk()
window.title('你喜欢谁的诗嘞')
window.geometry('500x250')l = tk.Label(window, bg='#abedc3', width=50, height=3, text='empty')
l.pack()
def print_selection():if (var_1.get()==0) & (var_2.get()==1):l.config(text='人生得意须尽欢,莫使金樽空对月')elif (var_1.get()==1) & (var_2.get()==0):l.config(text='无边落木萧萧下,不尽长江滚滚来')elif (var_1.get())==1 & (var_2.get())==1:l.config(text='李白:杜甫和我之间只能选一个,哼!->_->')elif (var_1.get())==0 & (var_2.get())==0:l.config(text='来吧选一个,小老弟')
var_1 = tk.IntVar()
var_2 = tk.IntVar()  #定义两个整型变量
c1 = tk.Checkbutton(window, text='杜甫', variable=var_1,
onvalue=1, offvalue=0, command=print_selection) #设置一个Checkbutton多选选项,若选中则赋值为1,否则为0
c2 = tk.Checkbutton(window, text='李白', variable=var_2,
onvalue=1, offvalue=0, command=print_selection)
c1.pack()
c2.pack()
window.mainloop()

Canvas画布

import tkinter as tkwindow = tk.Tk()
window.title('一个小画布')
window.geometry('500x250')canvas = tk.Canvas(window, bg='#abedc3', height=200, width=400)  #设置一个画布
image_flie = tk.PhotoImage(file='nice.gif')
image = canvas.create_image(0,0,anchor='nw',image=image_flie)  #设置图片位置,从坐标(0,0)开始,anchor定义锚点位置
x0, y0, x1, y1 = 50, 50, 80, 80
line = canvas.create_line(x0, y0, x1, y1)  #设置一条线段
oval = canvas.create_oval(10, 10, x1, y1,fill='yellow')   #设置一个圆形
arc = canvas.create_arc(x0+50, y0+50, x1+50, y1+50,start=0,extent=180)  #设置一个扇形
rect = canvas.create_rectangle(10, 10, 50, 50)  #设置一个正方形canvas.pack()
def moveit():canvas.move(rect,0,2)  #每点击一次按钮,正方形向下移动2给单位canvas.move(oval,2,0)  #每点击一次按钮,圆形向右移动2个单位b = tk.Button(window, text='move', command=moveit).pack()
window.mainloop()

anchor属性的值:

运行结果:

注:圆形位置的确定以正方形作为参考

Menubar菜单

代码很长,别害怕重复的很多

import tkinter as tkwindow = tk.Tk()
window.title('一个菜单')
window.geometry('500x500')l =  tk.Label(window, text='', bg='yellow')
l.pack()
l_2 = tk.Label(window, text='', bg='pink')
l_2.pack()def anser():l_2.config(text='够了,谢谢妈妈,妈妈真好!')
def do_job1():l.config(text='蒜苔炒肉,吃,吃大块滴,两块够吗?')l_2.config(text='')
def do_job2():l.config(text='洋葱炒肉,吃,吃大块滴,两块够吗?')l_2.config(text='')
def do_job3():l.config(text='毛血旺,吃,吃大块滴,两块够吗?')l_2.config(text='')
def do_job4():l.config(text='西红柿草鸡蛋,吃,吃大块滴,两块够吗?')l_2.config(text='')
def do_job5():l.config(text='肉末茄子,吃,吃大块滴,两块够吗?')l_2.config(text='')
def do_job6():l.config(text='炸土豆片,吃,吃大块滴,两块够吗?')l_2.config(text='')
b = tk.Button(window, text='回复', width=15, height=2, command=anser).pack()
var = tk.StringVar()
menubar = tk.Menu(window) #设置一个菜单,包含在window界面中
#第一个选项集
pigmenu = tk.Menu(menubar, tearoff=0)     #设置一个选项集包含在menubar菜单中
menubar.add_cascade(label='荤菜', menu=pigmenu)   #设置一个父级选项包含在pigmenu选项集中
pigmenu.add_command(label='蒜苔炒肉', command=do_job1) #设置以下三个子选项
pigmenu.add_command(label='洋葱炒肉', command=do_job2)
pigmenu.add_command(label='毛血旺', command=do_job3)
pigmenu.add_separator()  #设置一个分割线
pigmenu.add_command(label='朕只想吃素的', command=window.quit)  #点击此选项将退出程序
#第二个选项集(流程同上)
caimenu = tk.Menu(menubar,tearoff=0)
menubar.add_cascade(label='素菜', menu=caimenu)
caimenu.add_command(label='西红柿草鸡蛋', command=do_job4)
caimenu.add_command(label='肉末茄子', command=do_job5)
caimenu.add_command(label='炸土豆片', command=do_job6)
caimenu.add_separator()
caimenu.add_command(label='朕可不是吃素的', command=window.quit)
window.config(menu=menubar)   #将window界面的菜单改为menubar
window.mainloop()

Frame框架

import tkinter as tkwindow = tk.Tk()
window.title('一个框架')
window.geometry('500x250')tk.Label(window, text='一份心情,一种喜悦!').pack()frm = tk.Frame(window)   #设置一个大框架,包含在window界面
frm.pack()
frm_l = tk.Frame(frm)      #设置一个子框架,包含在大框架frm中
frm_r = tk.Frame(frm)      #设置一个子框架,包含在大框架frm中
frm_l.pack(side='left')    #设置子框架frm_l在大框架的左侧
frm_r.pack(side='right')   #设置子框架frm_r在大框架的右侧
tk.Label(frm_r, text='疯子在右').pack()    #设置以下三个标签分别在三个子框架内
tk.Label(frm_r, text='疯子在右').pack()
tk.Label(frm_l, text='天才在左').pack()window.mainloop()

messagebox弹窗

import tkinter as tk
from tkinter import messagebox
window = tk.Tk()
window.title('一个消息弹窗')
window.geometry('500x250')def normal():tk.messagebox.showinfo(title='好哇', message='程序运行成功!')
def warning():tk.messagebox.showwarning(title='警告', message='程序出错啦!')
def error():tk.messagebox.showerror(title='错误', message='我靠,程序出现致命错误')
def askquestion():tk.messagebox.askquestion(title='询问', message='我可以亲你一下吗?')   #若选‘是’则返回yes,选‘否’返回no
def askretrycancel():tk.messagebox.askretrycancel(title='询问2', message='你是李银河吧?')  #设置重试取消按钮,返回True或Fasle
def askokcancel():tk.messagebox.askokcancel(title='询问3', message='你认识马冬梅吗?')   #设置确定取消按钮,确定返回True,取消返回False
tk.Button(window, text='成功', command=normal).pack()
tk.Button(window, text='警告', command=warning).pack()
tk.Button(window, text='错误', command=error).pack()
tk.Button(window, text='询问', command=askquestion).pack()
tk.Button(window, text='询问2', command=askretrycancel).pack()
tk.Button(window, text='询问3', command=askokcancel).pack()
window.mainloop()

实例:

python tkinter界面基础----文艺范儿相关推荐

  1. 屌丝还是文艺范儿:小米2 VS MX2

    两个风格截然不同的厂商先后推出旗下热门手机的第二代 最近手机厂商特别喜欢在水立方举行发布会,上星期步步高发布了一款音乐手机,11月 28 日,从来没举行过大型发布会的魅族又在那发布了年度新品 MX2. ...

  2. 文艺范儿的程序猿和攻城狮们

    文艺范儿的程序猿和攻城狮们 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句 ...

  3. 立秋后6大脏器排毒法 干净才是真正文艺范儿(转)

    导语:当脏器开始因毒素而早衰,美丽也随之而去.了解脏器的排毒秉性,才能及时清除体内垃圾,使机体保持一个相对清洁的内环境.立秋时节身体排毒很重要,文艺范儿就应该从"零毒"开始,身体的 ...

  4. python tkinter界面 控件位置随窗体自动调整适应_如何实现python tkinter控件随窗口变化?...

    不管是对于Java还是对于Python,我们最开始学习的时候,都会碰到关于开发上的窗口设置,如果不设置这个内容,你所呈现的项目效果,是非常不美观的,而往往为了符合美化,大家都会花费很多心思在基础的窗口 ...

  5. python tkinter界面布局,python图形界面tkinter布局那些事

    布局 任何界面都有自己的布局风格,有些是横向布局,有些是纵向布局,有些是流水布局,还有些是网格布局,总之布局就是一种考虑如何放置元素或者组件的一种说明方式. 包裹(包装)布局 thinter中使用pa ...

  6. Python tkinter界面编写,制作【法律条文查询工具】

    前言 每次看新闻,会有一些社会新闻说某某某犯了什么法,第几几条.... 但是对于我一个没专门学过法律的人来说,只能知道个大概,想了解具体点的,每次都要去百度查. 所以我就在想,为什么我不能写一个程序, ...

  7. python tkinter的基础用法

    from tkinter import * windows = Tk() windows.title('first windows') # 设置大小,但是中间的那个符号是x,未知数的那个x,而不是乘号 ...

  8. python tkinter界面随分辨率自动调整尺寸,Tkinter画布自动调整大小

    所以在回答这个问题的过程中,我遇到了来自Tkinter的一些奇怪的行为.我有一个类,它可以调整一个Canvas实例的大小,以及在该实例上绘制的任何小部件的大小.但是,当我运行代码时,不管窗口的初始尺寸 ...

  9. 《观音山》的文艺范儿

    这个周末的情绪不太高,刚才想到,可能和周五看了<观音山>有关吧. 对于这部片子怎么评价呢,要说好吧,也不知道好在哪儿,要说不好吧,中间也不会看不下去,并且多少有点想看下去的愿望.看这部电影 ...

最新文章

  1. 巧解SEP杀毒软件卸载需要密码才能完全卸载问题
  2. Array String对象的方法和属性
  3. Linux常用编辑器使用:vi、vim、nano、gedit
  4. select框怎么传值到服务端_前端简历中的项目经历怎么突出亮点?
  5. Python 爬虫小程序(正则表达式的应用)
  6. nginx负载均衡与反向代理
  7. oracle设置临时表空间,Oracle临时表空间查看、添加临时表空间数据文件、修改默认临时表空间 方法!...
  8. 编程语言python怎么读-0编程基础,什么语言也没学过,请问学Python怎样入门?...
  9. Python教材(数据分析、数据挖掘与可视化)——第7章课后习题
  10. undefined symbol: PyFPE_jbuf
  11. JDBC连接池DBUtils使用
  12. 工具配置-如何在NextCloud私有云盘安装的olnyOffice插件中添加中文字体支持实践操作...
  13. P3939 数颜色 动态开点线段树
  14. cocos2d-iPhone 点滴
  15. 编码至高法则-高内聚低耦合
  16. 二叉树的基本概念以及性质
  17. 光猫可以直接接交换机吗 交换机能直接连光猫吗
  18. (转)Unity 之 UGUI 小总结
  19. VBA--遍历所有工作表,获取所有行和列,复制粘贴为数值
  20. uni-app,一段文字实现展开、收起全文点点点

热门文章

  1. Kotlin 密封类代替枚举类
  2. 理解和使用Promise.all和Promise.race
  3. 西安电子科技大学期末C语言考试2022年真题 --LXY
  4. 如何在大型系统中提供拼音检索服务
  5. python京东购买_python大规模爬取京东
  6. Android如何播放h.264格式视频
  7. [网鼎杯 2020 青龙组]AreUSerialz
  8. 三十八、Fluent融化凝固模型参数设置依据
  9. 日记:2021.11.22
  10. activiti——监听器