最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python怎样做界面

    正文概述    2020-09-20   171

    python怎样做界面

    作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多,下面给大家介绍几种常用的界面库。

    1.tkinter

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

    Tkinter 由一定数量的模块组成。Tkinter位于一个名为_tkinter(较早的版本名为tkinter)的二进制模块中 。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里面的基础控件:

    python怎样做界面

    接下来的代码讲解中你需要导入这些

    from tkinter import *
    from tkinter.tix import Tk, Control, ComboBox  #升级的组合控件包
    from tkinter.messagebox import showinfo, showwarning, showerror #各种类型的提示框

    在进行界面绘制之前你需要初始化Tk()

    root = Tk() # 初始化Tk()

    root便是你布局的根节点了,以后的布局都在它之上

    root.title("hello tkinter")    # 设置窗口标题
    root.geometry("800x1000")    # 设置窗口大小 注意:是x 不是*
    root.resizable(width=True, height=True) # 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True
    root.tk.eval('package require Tix')  #引入升级包,这样才能使用升级的组合控件

    设置一些窗口属性

    1.Label

    再来看看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)

     

    python怎样做界面

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

    # Booleans
    NO=FALSE=OFF=0
    YES=TRUE=ON=1
     
    # -anchor and -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'
     
    # Special tags, marks and insert positions
    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)
     
    # Text widget and button states
    NORMAL='normal'
    DISABLED='disabled'
    ACTIVE='active'
    # Canvas state
    HIDDEN='hidden'
     
    # Menu item types
    CASCADE='cascade'
    CHECKBUTTON='checkbutton'
    COMMAND='command'
    RADIOBUTTON='radiobutton'
    SEPARATOR='separator'
     
    # Selection modes for list boxes
    SINGLE='single'
    BROWSE='browse'
    MULTIPLE='multiple'
    EXTENDED='extended'
     
    # Activestyle for list boxes
    # NONE='none' is also valid
    DOTBOX='dotbox'
    UNDERLINE='underline'
     
    # Various canvas styles
    PIESLICE='pieslice'
    CHORD='chord'
    ARC='arc'
    FIRST='first'
    LAST='last'
    BUTT='butt'
    PROJECTING='projecting'
    ROUND='round'
    BEVEL='bevel'
    MITER='miter'
     
    # Arguments to xview/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)

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

    python怎样做界面

    python怎样做界面

    3.Scale

    def resize(ev=None):
        lable.config(font='Helvetica -%d bold'%scale.get())
    scale=Scale(root,from_=10,to=40,orient=HORIZONTAL,command=resize)
    scale.set(12)
    scale.pack()

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

    python怎样做界面

    python怎样做界面

    4.NumbericUpDown

    ct=Control(root,label='Number:',integer=True,max=12,min=2,value=2,step=2)
    ct.label.config(font='Helvetica 14 bold')
    ct.pack()

    python怎样做界面

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

    python怎样做界面

    5.ComboBox

    cb=ComboBox(root,label='Type:',editable=True)
    for animal in ('dog','cat','hamster','python'):
        cb.insert(END,animal)
    cb.pack()

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

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

    python怎样做界面

    6.Menu

    def click():
        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则是给外层的选项添加一个子选项

    python怎样做界面

    7.Frame

    frame1 =Frame(root)
    frame1.pack(fill=X)
    lable1=Label(frame1,text='您的花名:  ')
    lable1.grid(row=1,column=0)

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

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

    python怎样做界面

    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)

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

    python怎样做界面

    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)
    for item in ["C","C++","JAVA","PYTHON","R","SQL","JS"]:
        listbox.insert(END,item)
    DELETE=Button(frame4,text="删除",command=lambda listbox=listbox:listbox.delete(ANCHOR))
    DELETE.grid(row=1,column=2)
    language=Button(frame4,text="确定")
    language.grid(row=2,column=1)

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

    python怎样做界面

    10.Canvas

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

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

    from tkinter import *
     
    class CanvasDemo:
        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()
     
        def displayRect(self):
            self.canvas.create_rectangle(10, 10, 190, 90, tags = "rect")
        def displayOval(self):
            self.canvas.create_oval(10, 10, 190, 90, tags = "oval", fill = "red")
        def displayArc(self):
            self.canvas.create_arc(10, 10, 190, 90, start = -90, extent = 90, width = 5, 
            fill = "red", tags = "arc")
        def displayPolygon(self):
            self.canvas.create_polygon(10, 10, 190, 90, 30, 50, tags = "polygon")
        def displayLine(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")
        def displayString(self):
            self.canvas.create_text(60, 40, text = "Hi,i am a string",font = "Tine 10 bold underline",
            tags = "string")
        def clearCanvas(self):
            self.canvas.delete("rect", "oval", "arc", "polygon", "line", "string")
     
    CanvasDemo()

    python怎样做界面

    11.CheckButton

    frame8=Frame(root)
    frame8.pack()
    agree=StringVar()
    agree=Checkbutton(frame8,text='我同意',variable=agree,onvalue='确定',offvalue="不确定",)
    agree.grid()

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

    python怎样做界面

    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方向上的外边距。

    python怎样做界面

    python学习网,免费的在线学习python平台,欢迎关注!


    起源地下载网 » python怎样做界面

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元