python怎么做程序界面,python怎么做图形界面

  python怎么做程序界面,python怎么做图形界面

  作为Pyhon开发者,你迟早会遇到开发图形用户界面(GUI)应用的任务。这时候就需要一些接口库来帮助我们快速搭建接口。python有很多接口库。下面是一些常用的接口库。

  1.tkinter

  Tkinter(也叫Tk接口)是Tk图形用户界面工具包的标准Python接口。Tk是一个轻量级的跨平台图形用户界面(GUI)开发工具。TKInters和TKInters可以在大多数Unix平台、Windows和Macintosh系统上运行。

  Tkinter由一定数量的模块组成。TKInters位于名为_ TKInters的二进制模块中(早期版本名为TKInters)。Tkinter包含一个Tk的低级接口模块,应用程序级别的程序员不直接使用它。它通常是共享库(或DLL),但在某些情况下,它是由Python解释器静态链接的。

  2.pyqt

  PyQt是Qt库的Python版本。PyQt3支持Qt1至Qt3。PyQt4支持Qt4。它最早发布于1998年,但当时叫PyKDE,因为SIP和PyQt一开始就没有分开。PyQt是用SIP写的。PyQt提供GPL版本和商业版本。

  3.wxpython

  WxPython是一个优秀的Python语言GUI图形库,它允许Python程序员轻松地创建一个完整的GUI用户界面,并带有完整的功能键。WxPython是作为一个优秀的跨平台GUI库wxWidgets的Python包和Python模块提供给用户的。

  就像Python和wxWidgets一样,wxPython是一款开源软件,具有出色的跨平台能力,可以运行在32位windows、大多数Unix或类Unix系统以及Macintosh OS X上。

  4.Kivy

  这是一个非常有趣的项目,基于OpenGL ES 2,支持Android和iOS平台的原生多点触控。作为一个事件驱动的框架,Kivy非常适合游戏开发和处理从widgets到动画的任务。如果你想开发跨平台的图形应用,或者只是需要一个强大的跨平台图形用户开发框架,Kivy是个不错的选择。

  5.pygame

  Pygame是一个跨平台的Python模块,专门为视频游戏设计。它包含图像和声音。基于SDL,允许不受低级语言(如机器语言和汇编语言)约束的实时视频游戏开发。

  这个库是用来写游戏的,但是你也可以用它来写界面。

  至于选择什么库是个人喜好,强烈推荐Tkinter。下面我给大家介绍一下:

  让我们先来看看Tkinter中的基本控件:

  您需要在下一个代码解释中导入这些内容。

  fromtkinterimport *

  从tkinter.tiximportk,control,combobox #升级的组合控件包

  来自TkINTER。MessageBoxImportShowInfo,ShowWarning,ShowError #各种提示框绘制界面前需要初始化TK()。

  Root=Tk()# Initialize Tk()root是你布局的根节点,以后所有的布局都会在上面。

  Root.title(hellotkinter)#设置窗口标题

  Root.geometry(800x1000)#设置窗口大小注意:是x否*

  Root.resizable (width=True,height=True) #设置窗口的长度/宽度是否可以改变,False不可改变,True可改变,默认为True。

  root . tk . eval( packagereretix )#引入升级包,这样可以用升级后的combo控件设置一些窗口属性。

  1.Label

  再看标签,它

  的属性很多

  

activebackground,activeforeground,anchor,

  background,bitmap,borderwidth,cursor,

  disabledforeground,font,foreground,

  highlightbackground,highlightcolor,

  highlightthickness,image,justify,

  padx,pady,relief,takefocus,text,

  textvariable,underline,wraplength

  height,state,width

太多了,作用基本和名字一样,这里就不一一说了,你可以自己去试试,我说一下常用的属性

  

lable=Label(root,text="label",bg="pink",bd=10,font=("Arial",12),width=8,height=3)

  lable.pack(side=LEFT)

  

  最后你需要调用pack()来把控件布置上去,你可以指定布局方式,可定义的属性也非常多。

  

#Booleans

  NO=FALSE=OFF=0

  YES=TRUE=ON=1

  

  #-anchorand-sticky

  N='n'

  S='s'

  W='w'

  E='e'

  NW='nw'

  SW='sw'

  NE='ne'

  SE='se'

  NS='ns'

  EW='ew'

  NSEW='nsew'

  CENTER='center'

  

  #-fill

  NONE='none'

  X='x'

  Y='y'

  BOTH='both'

  

  #-side

  LEFT='left'

  TOP='top'

  RIGHT='right'

  BOTTOM='bottom'

  

  #-relief

  RAISED='raised'

  SUNKEN='sunken'

  FLAT='flat'

  RIDGE='ridge'

  GROOVE='groove'

  SOLID='solid'

  

  #-orient

  HORIZONTAL='horizontal'

  VERTICAL='vertical'

  

  #-tabs

  NUMERIC='numeric'

  

  #-wrap

  CHAR='char'

  WORD='word'

  

  #-align

  BASELINE='baseline'

  

  #-bordermode

  INSIDE='inside'

  OUTSIDE='outside'

  

  #Specialtags,marksandinsertpositions

  SEL='sel'

  SEL_FIRST='sel.first'

  SEL_LAST='sel.last'

  END='end'

  INSERT='insert'

  CURRENT='current'

  ANCHOR='anchor'

  ALL='all'#e.g.Canvas.delete(ALL)

  

  #Textwidgetandbuttonstates

  NORMAL='normal'

  DISABLED='disabled'

  ACTIVE='active'

  #Canvasstate

  HIDDEN='hidden'

  

  #Menuitemtypes

  CASCADE='cascade'

  CHECKBUTTON='checkbutton'

  COMMAND='command'

  RADIOBUTTON='radiobutton'

  SEPARATOR='separator'

  

  #Selectionmodesforlistboxes

  SINGLE='single'

  BROWSE='browse'

  MULTIPLE='multiple'

  EXTENDED='extended'

  

  #Activestyleforlistboxes

  #NONE='none'isalsovalid

  DOTBOX='dotbox'

  UNDERLINE='underline'

  

  #Variouscanvasstyles

  PIESLICE='pieslice'

  CHORD='chord'

  ARC='arc'

  FIRST='first'

  LAST='last'

  BUTT='butt'

  PROJECTING='projecting'

  ROUND='round'

  BEVEL='bevel'

  MITER='miter'

  

  #Argumentstoxview/yview

  MOVETO='moveto'

  SCROLL='scroll'

  UNITS='units'

  PAGES='pages'

写完这些你运行程序发现还是无法出现界面,那是因为你还少了一句

  

root.mainloop()
加上这句话使程序进入消息循环,界面便会显示出来

  学完了label之后学其他控件也就简单了很多,因为很多属性都是相同的

  2.Button

  

button=Button(root,text='QUIT',command=root.quit,activeforeground="black",activebackground='blue',bg='red',fg='white')

  button.pack(fill=Y,expand=1)

之前说过的属性如果没有特殊情况就不再说了

  

  

  3.Scale

  

defresize(ev=None):

  lable.config(font='Helvetica-%dbold'%scale.get())

  scale=Scale(root,from_=10,to=40,orient=HORIZONTAL,command=resize)

  scale.set(12)

  scale.pack()

和button不同的是command不再是点击事件了而是拖动事件 ,调用set()方法可以设置当前位置

  

  

  4.NumbericUpDown

  

ct=Control(root,label='Number:',integer=True,max=12,min=2,value=2,step=2)

  ct.label.config(font='Helvetica14bold')

  ct.pack()

  这是一个数字选择框 其中的字体配置需要使用config()方法来进行配置

  

  5.ComboBox

  

cb=ComboBox(root,label='Type:',editable=True)

  foranimalin('dog','cat','hamster','python'):

  cb.insert(END,animal)

  cb.pack()

这是一个下拉选择框,label前面要显示的字,editable控制是否可更改

  调用insert()给下拉选择框添加选项

  

  6.Menu

  

defclick():

  print("点击了一次")

  menubar=Menu(root)

  root.config(menu=menubar)

  filemenu=Menu(menubar,tearoff=0)

  menubar.add_cascade(label='文件',menu=filemenu)

  filemenu.add_command(label='新建...',command=click())

  filemenu.add_command(label='打开...',command=click())

  filemenu.add_command(label='保存',command=click())

  filemenu.add_command(label='关闭填写',command=root.quit)

惨淡蓝需要所依附的节点配置menu才能起作用

  调用add_cascade给menu添加一项选项

  调用add_command则是给外层的选项添加一个子选项

  

  7.Frame

  

frame1=Frame(root)

  frame1.pack(fill=X)

  lable1=Label(frame1,text='您的花名:')

  lable1.grid(row=1,column=0)

frame相当于一个局部的窗体,可以用来装载其它控件

  使用grid能让你更容易把握控件的位置,你可以指定它出现在几行几列,是否跨行跨列,跨几行等等。

  

  8.Radiobutton

  

frame2=Frame(root)

  frame2.pack(fill=X)

  lable2=Label(frame2,text='您的性别:')

  lable2.grid(row=1,column=0)

  sex=StringVar()

  sex_male=Radiobutton(frame2,text='男',fg='blue',variable=sex,value='男')

  sex_male.grid(row=1,column=2)

  sex_female=Radiobutton(frame2,text='女',fg='red',variable=sex,value='女')

  sex_female.grid(row=1,column=4)

这是一个单选框,里面的属性之前也说过

  

  9.ListBox

  

frame4=Frame(root)

  frame4.pack(fill=X)

  lable4=Label(frame4,text='4、请删除您不会的变成语言:')

  lable4.grid(row=1,column=0)

  listbox=Listbox(frame4)

  listbox.grid(row=1,column=1)

  foritemin["C","C++","JAVA","PYTHON","R","SQL","JS"]:

  listbox.insert(END,item)

  DELETE=Button(frame4,text="删除",command=lambdalistbox=listbox:listbox.delete(ANCHOR))

  DELETE.grid(row=1,column=2)

  language=Button(frame4,text="确定")

  language.grid(row=2,column=1)

这是一个列表,注意这里按钮点击事件的写法是用lambda表达式写的。

  

  10.Canvas

  

canvas=Canvas(window,width=200,height=100,bg="White")

  canvas.pack()

这是一个画板,你可以在上面画各种形状,上例子:

  

fromtkinterimport*

  

  classCanvasDemo:

  def__init__(self):

  window=Tk()

  window.title("CanvasDemo")

  

  self.canvas=Canvas(window,width=200,height=100,bg="White")

  self.canvas.pack()

  

  frame=Frame(window)

  frame.pack()

  

  btRectangle=Button(frame,text="长方形",command=self.displayRect)

  btOval=Button(frame,text="椭圆",command=self.displayOval)

  btArc=Button(frame,text="圆弧",command=self.displayArc)

  btPolygon=Button(frame,text="多边形",command=self.displayPolygon)

  btLine=Button(frame,text="线",command=self.displayLine)

  btString=Button(frame,text="文字",command=self.displayString)

  btClear=Button(frame,text="清空",command=self.clearCanvas)

  

  btRectangle.grid(row=1,column=1)

  btOval.grid(row=1,column=2)

  btArc.grid(row=1,column=3)

  btPolygon.grid(row=1,column=4)

  btLine.grid(row=1,column=5)

  btString.grid(row=1,column=6)

  btClear.grid(row=1,column=7)

  

  window.mainloop()

  

  defdisplayRect(self):

  self.canvas.create_rectangle(10,10,190,90,tags="rect")

  defdisplayOval(self):

  self.canvas.create_oval(10,10,190,90,tags="oval",fill="red")

  defdisplayArc(self):

  self.canvas.create_arc(10,10,190,90,start=-90,extent=90,width=5,

  fill="red",tags="arc")

  defdisplayPolygon(self):

  self.canvas.create_polygon(10,10,190,90,30,50,tags="polygon")

  defdisplayLine(self):

  self.canvas.create_line(10,10,190,90,fill='red',tags="line")

  self.canvas.create_line(10,90,190,10,width=9,arrow="last",activefill="blue",

  tags="line")

  defdisplayString(self):

  self.canvas.create_text(60,40,text="Hi,iamastring",font="Tine10boldunderline",

  tags="string")

  defclearCanvas(self):

  self.canvas.delete("rect","oval","arc","polygon","line","string")

  

  CanvasDemo()

  11.CheckButton

  

frame8=Frame(root)

  frame8.pack()

  agree=StringVar()

  agree=Checkbutton(frame8,text='我同意',variable=agree,onvalue='确定',offvalue="不确定",)

  agree.grid()

这是一个多选框,oncalue代表被勾选时的值,offvalue代表不被勾选时的值。

  

  12.LabelFrame

  

frame10=Frame(root)

  frame10.pack()

  group=LabelFrame(frame10,text='特别鸣谢',padx=5,pady=5)

  group.grid()

  w=Label(group,text='容器框')

  w.pack()

这是个容器框,padx,pady分别控制在x,y方向上的外边距。

  

  盛行IT软件开发工作室,免费的在线学习python平台,欢迎关注!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: