首页 > 编程知识 正文

python可视界面输入,python视频教程在线学习

时间:2023-05-04 18:35:28 阅读:198666 作者:589

利用python中的tkinter创建窗口

1、窗口主体框架

import tkinter as tkwindow = tk.Tk() #创建窗口window.title("this is a test") #窗口标题window.geometry('500x400') #窗口大小,小写字母x#窗口的labelk = 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 tkwindow = tk.Tk() #创建窗口window.title("this is a test") #窗口标题window.geometry('500x400') #窗口大小,小写字母x#窗口的labeltextcontent = tk.StringVar() #文字变量储存k = tk.Label(window, textvar = textcontent, #文本,可变换 bg ='green', #字体的背景颜色 font = ('Arial',12), #字体和大小 width = 30 , height = 2 #字体所占的宽度和高度 )k.pack() #固定窗口hit_state = Falsei = 0textcontent.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() #可以得到输入的内容从容的薯片('insert',var) #在文本框的光标处插入var从容的薯片('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命名为Filefilemenu.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 命名为1submenu.add_cascade(label='2',menu = ssubmenu) #ssubmenu 命名为2window.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 tkwindow = 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()) 从容的薯片('insert',value)def insert_end(): var = e.get() 从容的薯片('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=' ')#询问选择对话窗 #packpack(side='top')#上pack(side='bottom')#下pack(side='left')#左pack(side='right')#右#gridgrid(row=i, column=j, padx=10, pady=10)#这里的参数 row为行,colum为列,padx就是单元格左右间距,pady就是单元格上下间距。#placeplace(x=20, y=10, anchor='nw')#将这个部件放在坐标为(x,y)的这个位置 后面的参数anchor=‘nw’ 意为锚定点是西北角。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。