python界面效果_Python 可视化界面学习简易教程

本文最后更新于2019-4-11,已超过 1 个月没有更新,如果文章内容或图片资源失效,请【留言反馈】,我会及时处理,谢谢!

利用python中的tkinter创建窗口

1、窗口主体框架

import tkinter as tk

window = tk.Tk() #创建窗口

window.title("this is a test") #窗口标题

window.geometry('500x400') #窗口大小,小写字母x

#窗口的label

k = tk.Label(window,

text = 'this is a window created by tkinter', #文本

bg ='green', #字体的背景颜色

font = ('Arial',12), #字体和大小

width = 30 , height = 2 #字体所占的宽度和高度

)

k.pack() #固定

#以上是窗口的主体

window.mainloop() #结束(不停循环刷新)

2、实现简单的点击计数窗口(添加标签和按钮)

import tkinter as tk

window = tk.Tk() #创建窗口

window.title("this is a test") #窗口标题

window.geometry('500x400') #窗口大小,小写字母x

#窗口的label

textcontent = tk.StringVar() #文字变量储存

k = tk.Label(window,

textvar = textcontent, #文本,可变换

bg ='green', #字体的背景颜色

font = ('Arial',12), #字体和大小

width = 30 , height = 2 #字体所占的宽度和高度

)

k.pack() #固定窗口

hit_state = False

i = 0

textcontent.set(i) #为textcontent置值

def hit_here():

global hit_state, i #指定为全局变量,如果你想要为一个定义在函数外的变量赋值,

# 那么你就得告诉Python这个变量名不是局部的,而是 全局 的。

#我们使用global语句完成这一功能。没有global语句,是不可能为定义在函数外的变量赋值的。

if hit_state == False:

hit_state = True

i+=1

textcontent.set(i)

else:

hit_state = False

i+=1

textcontent.set(i)

#添加按钮

b = tk.Button(

window,

text = 'button',

width = 5 , height = 2,

command = hit_here #执行函数体,而不是得到函数执行的结果

)

b.pack()

#以上是窗口的主体

window.mainloop() #结束(不停循环刷新)

可以通过config对label的内容进行重新设置,如下:

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

l.pack()

l.config(bg = 'green',text='change ' )

注:调用函数时,不带括号调用的是这个函数本身 ,是整个函数体,是一个函数对象,不须等该函数执行完成

带括号(参数或者无参)调用的是函数的执行结果,须等该函数执行完成的结果,如果没有返回则没有响应

3、添加输入、文本框、列表部件

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

e.pack()

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

t.pack()

e.get() #可以得到输入的内容

t.insert('insert',var) #在文本框的光标处插入var

t.insert('end',var) #在末尾插入var

var2 = tk.StringVar()

var2.set((11.22,33,44)) #设置列表中的内容、

lb = tk.Listbox(window, listvariable=var2) #创建一个选择列表

lb.pack()

value = lb.get(lb.curselection()) #获取选中的列表中的值

注意,列表中的值必须由tk.StringVar()  来设置,直接赋值无法使用

4、添加选择按钮radiobutton

r1 = tk.Radiobutton(window, text='Option A', #按钮的显示名称

variable=var, value='b', #var 的值放在value中

command=action) #执行的操作

r1.pack()

5、scale部件

s = tk.Scale(window,label = 'scale',from_ = 0,to = 10,orient = tk.HORIZONTAL,

length = 200, showvalue = 1,tickinterval = 2,resolution = 0.01,command = showup #触发的功能 )

s.pack()

参数from_=0,to=10的意思就是从0到10,即这个滚动条最小值为0,最大值为10(这里使用from_是因为在python中有from这个关键词)

参数orient=tk.HORIZONTAL在这里就是设置滚动条的方向,如我们所看到的效果图,这里HORIZONTAL就是横向。

参数length这里是指滚动条部件的长度,但注意的是和其他部件width表示不同,width表示的是以字符为单位,比如width=4,就是4个字符的长度,而此处的length=200,是指我们常用的像素为单位,即长度为200个像素

参数resolution=0.01 保留2位小数,如果保留一位就是resolution=0.1 这里的showvalue就是设置在滚动条上方的显示。showvalue=0上方无结果显示,如果改为showvalue=1,则会显示当前值,下图为效果图

6、勾选项checkbutton

tk.IntVar()

c = tk.Checkbutton(window, text='yes', #选项名

variable=var, onvalue=1, #选中时var的值

offvalue=0, #未选中时var的值

command=choice #选中时执行的命令 )

c.pack()

example:

var3 = tk.IntVar()

var4 = tk.IntVar()

def choice():

if(var3.get()==1)&(var4.get()==0):

l.config(bg = 'red',text = "you have choicen 'yes'!")

elif(var3.get()==0)&(var4.get()==1):

l.config(bg = 'red',text="you have choicen 'no'!")

elif(var3.get()==0)&(var4.get()==0):

l.config(bg='red', text='please choice!')

else:

l.config(text='error!you can just choice a answer')

c1 = tk.Checkbutton(window, text='yes', variable=var3, onvalue=1, #选中时var3的值

offvalue=0, #未选中时var3的值

command=choice)

c1.pack()

c2 = tk.Checkbutton(window, text='no', variable=var4, onvalue=1, #选中时var3的值

offvalue=0, #未选中时var3的值

command=choice)

c2.pack()

7、canvas画布

#创建画布

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

#添加图片

image_file = tk.PhotoImage(file='ins.gif')

image = canvas.create_image(10, 10, anchor='nw', image=imagefile)

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.pack()

image_file = tk.PhotoImage(file='ins.gif')这一句是创造一个变量存放ins.gif这张图片。 image = canvas.create_image(10, 10, anchor='nw', image=image_file)里面的参数10,10就是图片放入画布的坐标, 而这里的anchor=nw则是把图片的左上角作为锚定点,在加上刚刚给的坐标位置,即可将图片位置确定。

8、menubar菜单

menubar = tk.Menu(window) #在窗口上添加菜单栏

filemenu = tk.Menu(menubar, tearoff=0) #filemenu放在menu中

submenu = tk.Menu(filemenu) #submenu放在filemenu中

ssubmenu = tk.Menu(submenu) #ssubmenu放在submenu中

menubar.add_cascade(label='File', menu=filemenu) #add_cascade用来创建下拉栏,filemenu命名为File

filemenu.add_command(label='New', command=do_job) #add_command用来创建命令栏,不可有子项

filemenu.add_command(label='Open', command=do_job)

filemenu.add_command(label='Save', command=do_job)

filemenu.add_cascade(label='1',menu = submenu) #submenu 命名为1

submenu.add_cascade(label='2',menu = ssubmenu) #ssubmenu 命名为2

window.config(menu=menubar) #创建完毕

效果图为:

9、Frame

Frame 是一个在 Windows 上分离小区域的部件, 它能将 Windows 分成不同的区,然后存放不同的其他部件. 同时一个 Frame 上也能再分成两个 Frame, Frame 可以认为是一种容器.可以把它看做是一个小的window

#在`window`上创建一个`frame`

frm = tk.Frame(window)

frm.pack()

#在刚刚创建的`frame`上创建两个`frame`,我们可以把它理解成一个大容器里套了一个小容器,即`frm`上有两个`frame` ,`frm_l`和`frm_r`

frm_l = tk.Frame(frm)

frm_r = tk.Frame(frm)

#这里是控制小的`frm`部件在大的`frm`的相对位置,此处`frm_l`就是在`frm`的左边,`frm_r`在`frm`的右边

frm_l.pack(side='left')

frm_r.pack(side='right')

example:

import tkinter as tk

window = tk.Tk()

window.title('my window')

window.geometry('200x200')

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')

def insert_point():

value = lb.get(lb.curselection())

t.insert('insert',value)

def insert_end():

var = e.get()

t.insert('end',var)

#添加按钮

b1 = tk.Button(frm_l,text="insert point",width=15,height=2,command=insert_point)

b1.pack()

b2 = tk.Button(frm_l,text="insert end",command=insert_end)

b2.pack()

e = tk.Entry(frm_l,show='*')

e.pack()

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

t.pack()

l = tk.Label(frm_r, bg='yellow', width=20, text='empty')

l.pack()

def showup(v):

l.config(bg = 'yellow',text='you have selected ' + v)

s = tk.Scale(frm_r,label = 'scale',from_ = 0,to = 10,orient = tk.HORIZONTAL,

length = 200, showvalue = 1,tickinterval = 2,resolution = 0.01,command = showup)

s.pack()

tk.Label(frm_l, text='左面的部分').pack()

tk.Label(frm_r, text='右面的部分').pack()

window.mainloop()

效果图:

10、messagebox  弹窗以及放置位置pack、grid、place

tk.messagebox.showinfo(title=' ',message=' ')#提示信息对话窗

tk.messagebox.showwarning(title=' ',message=' ')#提出警告对话窗

tk.messagebox.showerror(title=' ',message=' ')#提出错误对话窗

tk.messagebox.askquestion(title=' ',message=' ')#询问选择对话窗

#pack

pack(side='top')#上

pack(side='bottom')#下

pack(side='left')#左

pack(side='right')#右

#grid

grid(row=i, column=j, padx=10, pady=10)

#这里的参数 row为行,colum为列,padx就是单元格左右间距,pady就是单元格上下间距。

#place

place(x=20, y=10, anchor='nw')

#将这个部件放在坐标为(x,y)的这个位置 后面的参数anchor=‘nw’ 意为锚定点是西北角。

本文转自:CSDN

您阅读这篇文章共花了:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值