1704天 博客通用头像 Edwiin

本人熟练掌握linux,windows的开关机,擅长nfs,samba,ftp,dhcp,bind,apache,mail等各项服务的安装与卸载,精通shell,mysql,iptables,selinux等单词的拼写,了解虚拟化,存储,集群等相关汉字的书写。

Python 可视化界面学习简易教程

发布于 2年前 / 358 次围观 / 0 条评论 / Python / Edwiin
本文最后更新于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

全站顶部广告位

  • 支付宝赞助图片
  • 微信赞助图片
  • QQ赞助图片
头像
描述: 还好有你,再见如初。

Press Space to start