管理系统界面设计python_python图形化界面设计(tkinter)一全面介绍_第1页
管理系统界面设计python_python图形化界面设计(tkinter)一全面介绍_第2页
管理系统界面设计python_python图形化界面设计(tkinter)一全面介绍_第3页
管理系统界面设计python_python图形化界面设计(tkinter)一全面介绍_第4页
管理系统界面设计python_python图形化界面设计(tkinter)一全面介绍_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、管理系统界面设计python_python图形化界面设计(tkinter)全面介绍3.3、单选按钮:(Radiobutton)是为了响应故乡排斥的若干单选项的单击事件以触发运行自定义函数所设的,该控件排除具有共有属性外,还具有显示文本(text)、返回变量(variable)、返回值(value)、响应函数名(command)等重要属性。响应函数名comma门小=函数名的用法与Button相同,函数名最后也要加括号。返回变量variable=var通常应预先声明变量的类型var=lntVar()或var=StringVar(),在所调用的函数中方可用var.get()方法获取被选中实例的val

2、ue值。例如下面:单选按钮fromtkinterimport*defMysel():dic=0:甲:1:乙:2:丙s=您选了+dic.get(var.get()+项lb.config(text=s)root=Tk()root.title(单选按钮)lb=Label(root)lb.pack()var=IntVar()rd1=Radiobutton(root,text=甲,variable=var,value=0,command=Mysel)rd1.pack()rd2=Radiobutton(root,text=乙,variable=var,value=1,command=Mysel)rd2.p

3、ack()rd3=Radiobutton(root,text=丙,variable=var,value=2,command=Mysel)rd3.pack()root.mainloop()3.4、复选框:(Checkbutton)是为了返回多个选项值的交互控件,通常不直接触发函数的执行。该控件除具有共有属性外,还具有显示文本(text)、返回变量(variable)、选中返回值(onvalue)和未选中默认返回值(offvalue)等重要属性。返回变量variable=var通常可以预先逐项分别声明变量的类型var=lntVar()(默认)或var=StringVar(),在所调用的函数中方可分

4、别调用var.get()方法取得被选中实例的onvalue或offvalue值。复选框实例通常还可分别利用select()、deselect()和toggle()方法对其进行选中、清除选中和反选操作。如下的例子:利用复选框实现,单击OK可以将选中的结果显示在标签上。效果如下:复选框的应用方法:利用函数中的if-else分支实现多项显示fromtkinterimport*importtkinterdefrun():if(CheckVar1.get()=0andCheckVar2.get()=0andCheckVar3.get()=0andCheckVar4.get()=0):s=您还没选择任何爱

5、好项目else:s1=足球ifCheckVar1.get()=1elses2=篮球ifCheckVar2.get()=1elses3=游泳ifCheckVar3.get()=1elses4=田径ifCheckVar4.get()=1elses=您选择Y%s%s%s%s%(s1,s2,s3,s4)lb2.config(text=s)root=tkinter.Tk()root.title(复选框)lb1=Label(root,text=请选择您的爱好项目)lb1.pack()CheckVar1=IntVar()CheckVar2=IntVar()CheckVar3=IntVar()CheckVar

6、4=IntVar()ch1=Checkbutton(root,text=足球,variable=CheckVar1,onvalue=1,offvalue=0)ch2=Checkbutton(root,text=篮球,variable=CheckVar2,onvalue=1,offvalue=0)ch3=Checkbutton(root,text=游泳,variable=CheckVar3,onvalue=1,offvalue=0)ch4=Checkbutton(root,text=田径:variable=CheckVar4,onvalue=1,offvalue=0)ch1.pack()ch2.

7、pack()ch3.pack()ch4.pack()btn=Button(root,text=OK,command=run)btn.pack()lb2=Label(root,text=)lb2.pack()root.mainloop()3.5、列表框与组合框:3.5.1、列表框:(Listbox)可供用户单选或多选所列条目以形成人机交互。列表框控件的主要方法见下面的表:方法功能描述curselection()返回光标选中项目编号的元组,注意并不是单个的整数delete(起始位置,终止位置)删除项目,终止位置可省略,全部清空为delete(O,END)get(起始位置,终止位)返回范围所含项目文

8、本的元组,终止位置可忽略insert(位置,项目元素)插入项目元素(若有多项,可用列表或元组类型赋值),若位置为END,则将项目元素添加在最后size()返回列表框行数执行自定义函数时,通常使用“实例名.surselection()”或“selected”来获取选中项的位置索引。由于列表框实质上就是将Python的列表类型数据可视化呈现,在程序实现时,也可直接对相关列表数据进行操作,然后再通过列表框展示出来,而不必拘泥于可视化控件的方法。看下面的一个例子:实现列表框的初始化、添加、插入、修改、删除和清空操作,如下:列表框的应用fromtkinterimport*defini():Lstbox1

9、.delete(0,END)list_items=数学,物理,化学,语文,外语foriteminlist_items:Lstbox1.insert(END,item)defclear():Lstbox1.delete(0,END)defins():ifentry.get()!=:ifLstbox1.curselection()=():Lstbox1.insert(Lstbox1.size(),entry.get()else:Lstbox1.insert(Lstbox1.curselection(),entry.get()defupdt():ifentry.get()!=andLstbox1.c

10、urselection()!=():selected=Lstbox1.curselection()0Lstbox1.delete(selected)Lstbox1.insert(selected,entry.get()defdelt():ifLstbox1.curselection()!=():Lstbox1.delete(Lstbox1.curselection()root=Tk()root.title(列表框实验)root.geometry(320 x240)frame1=Frame(root,relief=RAISED)frame1.place(relx=0.0)frame2=Frame

11、(root,relief=GROOVE)frame2.place(relx=0.5)Lstbox1=Listbox(frame1)Lstbox1.pack()entry=Entry(frame2)entry.pack()btn1=Button(frame2,text=初始化,command=ini)btn1.pack(fill=X)btn2=Button(frame2,text=添加,command=ins)btn2.pack(fill=X)btn3=Buttonframe2,text=插入,command=ins)#添加和插入功能实质上是一样的btn3.pack(fill=X)btn4=Bu

12、ttonframe2,text=修改,command=updt)btn4.pack(fill=X)btn5=Buttonframe2,text=删除,command=delt)btn5.pack(fill=X)btn6=Buttonframe2,text=清空,command=clear)btn6.pack(fill=X)root.mainloop()3.5.2、组合框:(Combobox)实质上是带文本框的上拉列表框,其功能也将是Python的列表类型数据可视化呈现,并提供用户单选或多选所列条目以形成人机交互。在图形化界面设计时,由于其具有灵活的界面,因此往往比列表框更受喜爱。但该控件并不包

13、含在tkinter模块中,而是与TreeView、Progressbar、Separator等控件一同包含在tkinter的子模块ttk中。如果使用该控件,应先与fromtkinterimportttk语句引用ttk子模块,然后创建组合框实例:实例名=Combobox(根对象,属性列表)指定变量var=StringVar(),并设置实例属性textvariable=var,values=列表。组合框控件常用方法有:获得所选中的选项值get()和获得所选中的选项索引current()o看下面的一个例子:实现四则运算计算器,将两个操作数分别填入两个文本框后,通过选择组合框中的算法触发运算,如下:组

14、合框的应用fromtkinter.ttkimport*defcalc(event):a=float(t1.get()b=float(t2.get()dic=0:a+b,1:a-b,2:a*b,3:a/bc=diccomb.current()lbl.config(text=str(c)root=Tk()root.title(四则运算)root.geometry(320 x240)t1=Entry(root)t1.place(relx=0.1,rely=0.1,relwidth=0.2,relheight=0.1)t2=Entry(root)t2.place(relx=0.5,rely=0.1,r

15、elwidth=0.2,relheight=0.1)var=StringVar()comb=Combobox(root,textvariable=var,values=加口,减,乘,除,)comb.place(relx=0.1,rely=0.5,relwidth=0.2)comb.bind(,calc)lbl=Label(root,text=结果)lbl.place(relx=0.5,rely=0.7,relwidth=0.2,relheight=0.3)root.mainloop()3.6、滑块:(Scale)是一种直观地进行数值输入的交互控件,其主要属性见下表:属性功能描述from_起始值

16、(最小可取值)lable标签文字,默认为无length滑块控件实例宽(水平方向)或高(垂直方向),默认为100像素orient滑块控件实例呈现方向,VERTCAL或HORIZONTAL(默认)repeatdelay鼠标响应延时,默认为300msresolution分辨精度,即最小值间隔sliderlength滑块宽度,默认为30像素state状态,若设置state=DISABLED,则滑块控件实例不可用tickinterval标尺间隔,默认为0,若设置过小,则会重叠to终止值(最大可取值)variable返回数值类型,可为IntVar(整数)、DoubleVar(浮点数)、或StringVar

17、(字符串)width控件实例本身的宽度,默认为15像素滑块控件实例的主要方法比较简单,有get()和set(值),分别为取值和将滑块设在某特定值上。滑块实例也可绑定鼠标左键释放事件,并在执行函数中添加参数event来实现事件响应。例如:在一个窗体上设计一个200像素宽的水平滑块,取值范围为1.05.0,分辨精度为0.05,刻度间隔为1,用鼠标拖动滑块后释放鼠标可读取滑块值并显示在标签上。效果如下:滑块控件的应用fromtkinterimport*defshow(event):s=滑块的取值为+str(var.get()lb.config(text=s)root=Tk()root.title(滑

18、块实验)root.geometry(320 x180)var=DoubleVar()scl=Scale(root,orient=HORIZONTAL,length=200,from_=1.0,to=5.0,label=请拖动滑块:tickinterval=1,resolution=0.05,variable=var)scl.bind(,show)scl.pack()lb=Label(root,text=)lb.pack()root.mainloop()3.7、菜单:(Menu)用于可视化地为一系列的命令分组,从而方便用户找到和触发执行这些命令。这里Menu所实例化别的主要是菜单,其通式为:菜单

19、实例名=Menu(根窗体)菜单分组1=Menu(菜单实例名)菜单实例名.add_cascade(,菜单分组1.add_command(,)其中较为常见的方法有:add_cascade()、add_command()和add_separator(),分别用于添加一个菜单分组、添加一条菜单命令和添加一条分割线。利用Menu控件也可以创建快捷菜单(又称为上下文菜单)。通常需要右击弹出的控件实例绑定鼠标右击响应事件,并指向一个捕获event参数的自定义函数,在该自定义函数中,将鼠标的触发位置event.x_root和event.y_root以post()方法传给菜单。例子:仿照window自带的“记事

20、本”中的文件和编辑菜单,实现在主菜单个快捷菜单上触发菜单命令,并相应改变窗体上的标签的文本内容。效果如下:菜单和快捷菜单fromtkinterimport*defnew():s=新建lbl.config(text=s)defope():s=打开lbl.config(text=s)defsav():s=保存lbl.config(text=s)defcut():s=剪切lbl.config(text=s)defcop():s=复制lbl.config(text=s)defpas():s=粘贴Ibl.config(text=s)defpopupmenu(event):mainmenu.post(ev

21、ent.x_root,event.y_root)root=Tk()root.title(菜单实验)root.geometry(320 x240)Ib1=Label(root,text=显示信息,font=(黑体,32,bold)lb1.place(relx=0.2,rely=0.2)mainmenu=Menu(root)menuFile=Menu(mainmenu)#菜单分组menuFilemainmenu.add_cascade(label=文件,menu=menuFile)menuFile.add_command(label=新建,command=new)menuFile.add_comm

22、and(label=打开,command=ope)menuFile.add_command(label=保存,command=sav)menuFile.add_separator()#分割线menuFile.add_command(label=退出,command=root.destroy)menuEdit=Menu(mainmenu)#菜单分组menuEditmainmenu.add_cascade(label=编辑,menu=menuEdit)menuEdit.add_command(label=剪切,command=cut)menuEdit.add_command(label=复制,co

23、mmand=cop()menuEdit.add_command(label=粘贴,command=pas()root.config(menu=mainmenu)root.bind(Button-3,popupmenu)#根窗体绑定鼠标右击响应事件root.mainloop()3.8、子窗体:用Toplevel可新建一个显示在最前面的子窗体,其通式为:字体实例名=Toplevel(根窗体),子窗体与根窗体类似,也可设置title、geomerty等属性,并在画布上布局其他控件。如下的例子:在根窗体上创建菜单,触发创建一个新的窗体根窗体与子窗体fromtkinterimport*defnewwin

24、d():winNew=Toplevel(root)winNew.geometry(320 x240)winNew.title(新窗体)lb2=Label(winNew,text=我在新窗体上)lb2.place(relx=0.2,rely=0.2)btClose=Button(winNew,text=关闭,command=winNew.destroy)btClose.place(relx=0.7,rely=0.5)root=Tk()root.title(新建窗体实验)root.geometry(320 x240)lb1=Label(root,text=主窗体font=(黑体,32,bold)l

25、b1.place(relx=0.2,rely=0.2)mainmenu=Menu(root)menuFile=Menu(mainmenu)mainmenu.add_cascade(label=菜单,menu=menuFile)menuFile.add_command(label=新窗体,command=newwind)menuFile.add_separator()menuFile.add_command(label=退出,command=root.destroy)root.config(menu=mainmenu)root.mainloop()关闭窗体程序运行的方法通常用destory(),

26、而不建议用quit()。用Toplevel所创建的子窗体是非模式(Modeless)的窗体,虽然初建时子窗体在最前面,但根窗体上的控件实例也是可以被操作的。3.9、模式对话框(Modal):是相对于前面介绍的非模式窗体而言的,所弹出的对话框必须应答,在关闭之前无法操作其后面的其他窗体。常见的模式对话框有消息对话框、输入对话框、文件选择对话框、颜色选择对话框等。3.9.1、交互对话框()、消息对话框:引用tkinter.messagebox包,可使用消息对话框函数。执行这些函数,可弹出模式消息对话框,并根据用户的响应但会一个布尔值。其通式为:消息对话框函数(,其他参数)看下面的例子:单击按钮,弹

27、出确认取消对话框,并将用户回答显示在标签中。效果如下:确定取消对话框fromtkinterimport*importtkinter.messageboxdefxz():answer=tkinter.messagebox.askokcancel(请选择,请选择确定或取消)ifanswer:lb.config(text=已确认)else:lb.config(text=已取消)root=Tk()lb=Label(root,text=)lb.pack()btn=Button(root,text=弹出对话框,command=xz)btn.pack()root.mainloop()(二)、输入对话框:引用

28、tkinter.simpledialog包,可弹出输入对话框,用以接收用户的简单输入。输入对话框常用askstring()、askfloat()和askfloat()三种函数,分别用于接收字符串、整数和浮点数类型的输入。如下面的例子:单击按钮,弹出输入对话框,接收文本输入显示在窗体的标签上。如下:输入对话框fromtkinter.simpledialogimport*defxz():s=askstring(请输入,请输入一串文字)lb.config(text=s)root=Tk()lb=Label(root,text=)lb.pack()btn=Button(root,text=弹出输入对话框

29、,command=xz)btn.pack()root.mainloop()3.9.2、文件选择对话框:引用tkinter.filedialog包,可弹出文件选择对话框,让用户直观地选择一个或一组文件,以供进一步的文件操作。常用的文件选择对话框函数有askopenfilename()、askopenfilenames()和asksaveasfilename(),分别用于进一步打开一个文件、一组文件和保存文件。其中,askopenfilename()和asksaveasfilenamme()函数的返回值类型为包含文件路径的文件名字符串,而askopenfilenames()函数的返回值类型为元组。

30、例如:单击按钮,弹出文件选择对话框(“打开”对话框),并将用户所选择的文件路径和文件名显示在窗体的标签上。如下文件选择对话框fromtkinterimport*importtkinter.filedialogdefxz():filename=tkinter.filedialog.askopenfilename()iffilename!=:lb.config(text=您选择的文件是+filename)else:lb.config(text=您没有选择任何文件)root=Tk()lb=Label(root,text=)lb.pack()btn=Button(root,text=弹出文件选择对话框

31、,command=xz)btn.pack()root.mainloop()3.9.3、颜色选择对话框:引用tkinter.colorchooser包,可使用askcolor()函数弹出模式颜色选择对话框,让用户可以个性化地设置颜色属性。该函数的返回形式为包含RGB十进制浮点元组和RGB十六进制字符串的元组类型,例如:“(135.527343.52734375,167.65234375,186.7265625),#87a7ba”。通常,可将其转换为字符串类型后,再截取以十六进制数表示的RGB颜色字符串用于为属性赋值。按住鼠标右键移动举例:单击按钮,弹出颜色选择对话框,并将用户所选择的颜色设置为窗体上标签的背景颜色,如下:颜色选择对话框fromtkinterimport*importtkinter.colorchooserdefxz():color=tkinter.colorchooser.askcolor()colorstr=str(color)print(打印字符串s切掉后=%s%(colorstr,colorstr-9:-2)lb.config(text=colorstr-9:-2,background=colorstr-9:-2)root=Tk()lb=Label(root,text=请关注颜色的变化)lb.pack()btn=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论