Tkinter的窗口部件代码练习

分享基本步骤代码。

Label&Button标签按钮

窗口主体框架

主题框架包含:主窗口(window)及主窗口的一些基本属性(标题大小)
让窗口活起来(window.mainloop())

import tkinter as tk

window = tk.Tk()
window.title(‘my window’)
window.geometry(‘200x100’)
#这里是窗口内容
window.mainloop()

窗口内容

l = tk.Label(window,
text=‘OMG!this is TK!’, #标签的文字
bg = ‘green’, #背景颜色
font =(‘Arial’,12), #字体和字体大小
width = 15,height = 2 #标签长宽
)
l.pack() #固定窗口位置

var = tk.StringVar() #这时文字变量储存器
l = tk.Label(window,
textvariable = var, #使用textvariabele替换text,因为这个可以变化
bg = ‘green’,font = (‘Arial’,12),width = 15,height=2)
l.pack()

b = tk.Button(window,
text = ‘hit me’, #显示在按钮上的文字
width=15,height = 2,
command=hit_me) #点击按钮式执行的命令
b.pack() #按钮位置

on_hit = False #默认初始状态为False
def hit_me():
globel on_hit
if on_hit == False: #从False状态变成True状态
on_hit = True
var.set(‘you hit me’) #设置标签文字为‘you hit me’
else: #从True状态变为False状态
on_hit = False
var.set(’’) #设置 文字为空

Entry&Text输入,文本框

窗口主体框架

主题框架包含:主窗口(window)及主窗口的一些基本属性(标题大小)
让窗口活起来(window.mainloop())

import tkinter as tk
winddow = tk.Tk()
window.title(‘my window’)
#窗口尺寸
window.geometry(‘200x100’)
#显示出来
window.mainloop()

窗口内容

创建按钮分别触发两种情况

b1 = tk.Button(window,text=“insert point”,width=15,height=2,command=insert_point)
b1.pack()

b2 = tk.Button(window,text=“insert end”,command= insert_end)
b2 = pack()

创建输入框entry,用户输入任何内容都显示为*

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

创建一个文本框用于显示

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

定义触发事件的函数。函数一定要放在按钮的上面

def insert_point():
var = e.get()
t.insert(‘insert’,var)

def insert_end():
var = e.get()
t.insert(‘end’,var)

Listbox列表部件

创建主窗口

winddow = tk.Tk()
window.title(‘my window’)
window.geometry(‘200x100’)

创建一个label用于显示

var1 = tk.StringVar() #创建变量
l = tk.Label(window,bg = ‘yellow’,width=4,textvariable = var1)
l.pack()

创建一个方法用于按钮的点击事件

def print_selection():
value = lb.get(lb.curselection()) #获取当前选中的文本
var1.set(value) #为label设置值

创建一个按钮

b1 = tk.Button(window,text=“print selection”,width=15,
height=2,command=print_selection)
b1.pack()

创建一个Listbox和变量var2,并将var2的值赋给Listbox

var2 = tk.StringVar()
var2.set((11,22,33,44)) #为变量设置值
#创建Listbox
lb = tk.Listbox(window,listvariable = var2) #将var2的值赋给Listbox
#创建一个list并将值驯化添加到Listbox控件中
list_items = (1,2,3,4)
for item in list_items:
lb.insert(‘end’,item) #从最后一个位置开始加入值
lb.insert(1,‘first’) #在第一个位置加入’first’字符
lb.insert(2,‘second’) #在第二个位置加入"second"字符
lb.delete(2) #删除第二个位置的字符
lb.pack()
#显示主窗口
window.mainloop()

Radiobutton 选择按钮

radiobutton部件

首先我们需要定义一个var用来将radiobutton 的值和Label的值联系在一起,然后创建一个randobutton部分:

var = tk.StringVar()
l = tk.Label(window,bg=‘yellow’,width=20,text=‘empty’)
l.pack()

r1 = tk.Radiobutton(window,text=‘Option A’,
variable=var,value=‘A’,
command=print_selection )
r1.pack()

其中variable=var一整句的意思是当我们鼠标选中了其中一个选项,把value的值A放到变量var中,然后赋值给variable

触发功能

print_selection功能就是选择了某个radiobutton后我们会在屏幕上打印的选项:

def print_selection():
l.config(text=‘you have selected’ + var.get())

Scale尺度

scale部件

s = tk.Scale(window,label-‘try me’,from_=5,to=11,orient=tk.HORIZONTAL,
length=200,showvalue=0,tickinterval=2,resolution=0.01,command=print_selection)
s.pack()

这里的参数label是指scale部件的名称,即在这里scale部件名称为try me

触发功能

l= tk.Label(window,bg=‘yellow’,width=20,text=‘empty’)
l.pack()

def print_selection(v):
l.config(text=‘you have selected’ + v)

Checkbutton勾选项

Checkbutton部件

var1 = tk.IntVar()
c1 = tk.Checkbutton(window,text=‘Python’,variable=var1,onvalue=1,offvalue=0,
command=print_selection)
c1.pack()

触发功能

def print_selection():
if (var1.get() == 1) & (var2.get() == 0): #如果选中第一个选项,未选中第二个选项
l.config(text='I love only Python ')
elif (var1.get() == 0) & (var2.get() == 1): #如果选中第二个选项,未选中第一个选项
l.config(text=‘I love only C++’)
elif (var1.get() == 0) & (var2.get() == 0): #如果两个选项都未选中
l.config(text=‘I do not love either’)
else:
l.config(text=‘I love both’) #如果两个选项都选中

Canvas画布

Canvas部件

canvas = tk.Canvas(window, bg=‘blue’, height=100, width=200)
canvas.pack()

image_file = tk.PhotoImage(file=‘ins.gif’)
image = canvas.create_image(10, 10, anchor=‘nw’, image=image_file)

x0, y0, x1, y1= 50, 50, 80, 80
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) #创建一个矩形

触发功能

def moveit():
canvas.move(rect, 0, 2)

Menubar菜单

menubar 部件

先需要加入一个 M enubar 作为整体框架, 然后再在 Menubar 中加一些部件.

menubar = tk.Menu(window)

定义一个空菜单单元

filemenu = tk.Menu(menubar, tearoff=0)

menubar.add_cascade(label=‘File’, menu=filemenu)

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()##这里就是一条分割线

filemenu.add_command(label=‘Exit’, command=window.quit)

submenu = tk.Menu(filemenu)##和上面定义菜单一样,不过此处实在File上创建一个空的菜单
filemenu.add_cascade(label=‘Import’, menu=submenu, underline=0)##给放入的菜单submenu命名为Import
submenu.add_command(label=“Submenu1”, command=do_job)##这里和上面也一样,在Import中加入一个小菜单命令Submenu1

触发功能

counter = 0
def do_job():
global counter
l.config(text='do '+ str(counter))
counter+=1

Frame 部件

tk.Label(window, text=‘on the window’).pack()

frm = tk.Frame(window)
frm.pack()

frm_l = tk.Frame(frm)
frm_r = tk.Frame(frm)

frm_l.pack(side=‘left’)
frm_r.pack(side=‘right’)

tk.Label(frm_l, text=‘on the frm_l1’).pack()##这个label长在frm_l上,显示为on the frm_l1
tk.Label(frm_l, text=‘on the frm_l2’).pack()##这个label长在frm_l上,显示为on the frm_l2
tk.Label(frm_r, text=‘on the frm_r1’).pack()##这个label长在frm_r上,显示为on the frm_r1

pack grid place放置位置

pack

首先我们先看看我们常用的pack(), 他会按照上下左右的方式排列.

tk.Label(window, text=‘1’).pack(side=‘top’)#上
tk.Label(window, text=‘1’).pack(side=‘bottom’)#下
tk.Label(window, text=‘1’).pack(side=‘left’)#左
tk.Label(window, text=‘1’).pack(side=‘right’)#右

place

tk.Label(window, text=1).place(x=20, y=10, anchor=‘nw’)

grid

for i in range(4):
for j in range(3):
tk.Label(window, text=1).grid(row=i, column=j, padx=10, pady=10)

messagebox部件

tk.Button(window, text=‘hit me’, command=hit_me).pack()

通过触发功能,调用messagebox

def hit_me():
tk.messagebox.showinfo(title=‘Hi’, message=‘hahahaha’)

这里点击button按钮就会弹出提示对话窗

下面给出几种形式

tk.messagebox.showinfo(title=’’,message=’’)#提示信息对话窗
tk.messagebox.showwarning()#提出警告对话窗
tk.messagebox.showerror()#提出错误对话窗
tk.messagebox.askquestion()#询问选择对话窗

如果给出如下定义就是打印出我们所选项对应的值

def hit_me():
print(tk.messagebox.askquestion(title=‘Hi’, message=‘hahahaha’))

print(tk.messagebox.askquestion())#返回yes和no
print(tk.messagebox.askokcancel())#返回true和false
print(tk.messagebox.askyesno())#返回true和false
print(tk.messagebox.askretrycancel())#返回true和false

参考链接:
https://morvanzhou.github.io/tutorials/python-basic/tkinter/2-08-menubar/

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常详细的python图形界面组件开发教程,以代码的形式解析讲解,且所有代码都可直接运行,非常容易上手。 这系列教程完全以代码的形式来写的,目标是:读者看代码和注释就可以理解代码的意思。但这里的读者需要具备的几项技能: 1熟悉python语言的基础,如果还没有,先看一下python的教程吧,英文官方(http://docs.python.org/tut/tut.html); 2对界面编程有一定的了解,知道基本的概念就可以了; 3对Tk有兴趣,别以为她是已经过时的技术,如果丧失了学习的兴趣,那肯定无法完成了; 4不要以Ctrl+C/Ctrl+V的方式使用本教程(虽然它可以这样直接运行),自己输入,你会发现自己原来也会犯这样的错误; 5安装了python2.5且确认安装了Tkinter模块(默认就安装了,如果你没有强制的把它去掉的话),下载python2.5(http://www.python.org/download/); 6如果在阅读教程中有不明白的,不要强迫自己,直接跳过去,继续下一个内容。 Tkinter教程系列教程的特点: 7他不是一本经过文字润色的文章,全部是代码,作者在必要的时候使用注释来解释; 8以组件为章节进行介绍,每个组件又分为不同的例子,各个例子可以单独使用,分别使用序号标注; 9各个例子的使用“注释+序号”的格式表示开始,下一个例子的开始为上一个例子的结束; 10全部使用结构化编程(SP),没有面向对象的概念(OO); 11基本上包含了TKinter的所有的控件,根据每个控件的使用方法,选择性的介绍了其属性和方法,没有全部介绍,全部的介绍查看Tkinter的官方参考(http://www.pythonware.com/library/tkinter/introduction/); 12例子不是百分百的完美,甚至有的例子没有按照Tkinter参考的描述完成,原因由于作者没有看懂:( 13参考书籍:http://www.pythonware.com/library/tkinter/introduction/,如有冲突以Tkinter参考为准
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值