精华内容
下载资源
问答
  • Python GUI界面编程

    万次阅读 多人点赞 2018-10-04 18:52:13
    常用GUI框架 wxPython 安装wxPython pip install -U wxPython C:\Users> pip install -U wxPython Collecting wxPython Downloading ...

    常用GUI框架

    wxPython

    安装wxPython

    pip install -U wxPython
    
    C:\Users> pip install -U wxPython
    Collecting wxPython
      Downloading https://files.pythonhosted.org/packages/34/41/e0e109a72966f596a5b93123d94eaabd53509ef6766fa3321b4bfadbbb14/wxPython-4.0.3-cp37-cp37m-win_amd64.whl (22.7MB)
        100% |████████████████████████████████| 22.7MB 819kB/s
    Collecting PyPubSub (from wxPython)
      Downloading https://files.pythonhosted.org/packages/ab/9e/3b50915d3346971aaa49074425788598ee4907e67c097e013f1a862bd45c/Pypubsub-4.0.0-py3-none-any.whl (63kB)
        100% |████████████████████████████████| 71kB 1.5MB/s
    Requirement already satisfied, skipping upgrade: six in d:\python\lib\site-packages (from wxPython) (1.11.0)
    Installing collected packages: PyPubSub, wxPython
    Successfully installed PyPubSub-4.0.0 wxPython-4.0.3
    

    wxPython的两个基础对象,应用程序对象和顶级窗口:

    • 应用程序对象管理主事件循环,主事件循环是wxPython程序的动力。如果没有应用程序对象,wxPython应用程序将不能运行。
    • 顶级窗口通常用于管理最重要的数据,控制并呈现给用户。

    创建一个wx.App的子类

    1. 定义子类wx.App
    2. 在定义子类中写一个OnInit()初始化方法
    3. 在程序的主要部分创建这个类的一个实例
    4. 调用应用程序实例的MainLoop方法。这个方法将程序的控制权转交给wxPython
    import wx  # 导入wxPython
    
    
    class App(wx.App):
        def OnInit(self):  # 初始化方法
            frame = wx.Frame(parent=None, title='第一个窗口程序')  # 创建顶级窗口
            frame.Show()  # 显示窗口
            return True  # 返回值(返回窗口,在屏幕展示)
    
    
    if __name__ == '__main__':
        app = App()  # 实例化App类
        app.MainLoop()  # 调用App类的MainLoop()主循环方法
    

    执行结果:

    直接使用wx.App

    通常,如果在系统中只有一个窗口的话,可以不创建wx.App子类,直接使用wx.App。这个类提供了一个最基本的OnInit()初始化方法。

    import wx  # 导入wxPython
    
    app = wx.App()  # 初始化wx.App类
    frame = wx.Frame(None, title='第一个窗口程序')  # 定义一个顶级窗口
    frame.Show()  # 显示窗口
    app.MainLoop()  # 调用wx.App类的MainLoop()主循环方法
    

    执行结果:

    使用wx.Frame框架

    wx.Frame(parent=None, id=-1, title="", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_DIALOG_STYLE, name="frame")
    
    • parent:框架的父窗口。如果是顶级窗口,这个值是None
    • id:关于新窗口的wxPython ID号。通常设为-1,让wxPython自动生成一个新的ID
    • title:窗口标题
    • pos:一个wx.Point对象,它指定这个新窗口的左上角在屏幕中的位置。在图形用户界面程序中,通常是(0,0)是显示器的左上角。这个默认值(-1,-1)将让系统决定窗口的位置
    • size:一个wx.Python对象,他指定这个窗口的初始尺寸,这个默认值(-1,-1)将让系统决定窗口的初始尺寸
    • style:指定窗口的类型的常量。可以使用或运算来组合他们。
    • name:框架内在的名字。可以使用它来寻找这个窗口

    示例代码:

    import wx  # 导入wxPython
    
    
    class MyFrame(wx.Frame):
        def __init__(self, parent, id):
            wx.Frame.__init__(self, parent, id, title="创建Frame", pos=(100, 100), size=(300, 300))
    
    
    if __name__ == '__main__':
        app = wx.App()  # 初始化应用
        frame = MyFrame(parent=None, id=1)  # 实例MyFrame类,并传递参数
        frame.Show()  # 显示窗口
        app.MainLoop()  # 调用MainLoop()主循环方法
    

    执行结果:

    常用控件

    StaticText文本类

    创建完窗口以后,我们可以在窗口内添加一些控件,所谓的控件,就是经常使用的按钮、文本、输入框、单选框等。

    wx.StaticText(parent, id, lable, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, name="staticText")
    
    • parent:父窗口部件
    • id:标识符。使用-1可以自动创建一个唯一的标识
    • lable:显示在静态控件中的文本内容
    • pos:一个wx.Point或者一个Python元组,它是窗口部件的位置
    • size:一个wx.Size或一个Python元组,它是窗口部件的尺寸
    • style:样式标记
    • name:对象名字

    实例代码:
    使用wx.StaticText输出Python之禅

    # -*- coding:utf-8 -*-
    import wx
    
    
    class MyFrame(wx.Frame):
        def __init__(self, parent, id):
            wx.Frame.__init__(self, parent, id, title="创建StaticText类",
                               pos=(100, 100), size=(600, 400))
            panel = wx.Panel(self)  # 创建画板
            # 创建标题,并设置字体
            title = wx.StaticText(panel, label='Python之禅——Tim Peters', pos=(100, 20))
            font = wx.Font(16, wx.DEFAULT, wx.FONTSTYLE_NORMAL, wx.NORMAL)
            title.SetFont(font)
            # 创建文本
            wx.StaticText(panel, label='优美胜于丑陋',pos=(50, 50))
            wx.StaticText(panel, label='明了胜于晦涩',pos=(50, 70))
            wx.StaticText(panel, label='简洁胜于复杂',pos=(50, 90))
            wx.StaticText(panel, label='复杂胜于凌乱',pos=(50, 110))
            wx.StaticText(panel, label='扁平胜于嵌套',pos=(50, 130))
            wx.StaticText(panel, label='间隔胜于紧凑',pos=(50, 150))
            wx.StaticText(panel, label='可读性很重要',pos=(50, 170))
            wx.StaticText(panel, label='即便假借特例的实用性之名,也不可违背这些规则', pos=(50,190))
            wx.StaticText(panel, label='不要包容所有错误,除非你确定需要这样做', pos=(50, 210))
            wx.StaticText(panel, label='当存在多种可能,不要尝试去猜测', pos=(50, 230))
            wx.StaticText(panel, label='而是尽量找一种,最好是唯一一种明显的解决方案', pos=(50, 250))
            wx.StaticText(panel, label='虽然这并不容易,因为你不是 Python 之父', pos=(50, 270))
            wx.StaticText(panel, label='做也许好过不做,但不假思索就动手还不如不做', pos=(50, 290))
            wx.StaticText(panel, label='如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然', pos=(50, 310))
            wx.StaticText(panel, label='命名空间是一种绝妙的理念,我们应当多加利用', pos=(50, 330))
    
    
    if __name__ == '__main__':
        app = wx.App()                      # 初始化应用
        frame = MyFrame(parent=None, id=-1)  # 实例MyFrame类,并传递参数
        frame.Show()                        # 显示窗口
        app.MainLoop()                      # 调用主循环方法
    
    

    上述代码中,使用panel = wx.Panel(self)来创建画板,并将panel 作为父类,然后将组件放入窗体中,此外,使用wx.Font类来设置字体。创建一个字体实例,需要使用如下构造函数:

    wx.Font(pointSize, family, style, weight, underline=False, faceName="", encoding=wx.FONTENCODING_DEFAULT)
    
    • pointSize:字体的整数尺寸,单位为磅
    • family:用于快速的指定一个字体而不需要知道该字体实际的名字
    • style:用于指定字体是否倾斜
    • weight:指明字体醒目程度
    • underline:仅在Windows系统下有效,如果取值为True,则加下划线,如果为False则无下划线
    • faceName:指定字体名
    • encoding:运行在几个编码中选择一个,大多数情况可以使用默认编码

    执行结果:

    TextCtrl输入文本

    wx.TextCtrl(parent, id, value="", pos=wx.DefaultPosition, size=wx.DefaultSize,style=0,validator=wx.DefaultValidator name=wx.TextCtrlNameStr)
    
    • style:单行wx.TextCtrl的样式,取值如下:
      • wx.TE_CENTER:控件中的文本居中
      • wx.TE_LEFT:控件中的文本左对齐
      • wx.TE_NOHIDESEL:文本始终高亮显示,仅适用于Windows
      • wx.TE_PASSWORD:不显示所键入的文本,以(*)代替显示
      • wx.TE_PROCESS_ENTER:如果使用改参数,那么当用户在控件内按下Enter键时,一个文本输入事件将被触发。否则,按键事件由该文本控件或该对话框管理
      • wx.TE_PROCESS_TAB:如果指定了这个样式,那么通常的字符事件在按下Tab键时创建(一般意味着一个制表符将被插入文本)。否则,tab由对话框来管理,通常是控件间切换
      • wx.TE_READONLY:文本控件为只读,用户不能修改其中文本
      • wx.TE_RIGHT:控件中的文本右对齐
    • value:显示在该控件中的初始文本
    • validator:常用于过滤数据以确保只能键入要接受的数据

    示例代码:

    # -*- coding:utf-8 -*-
    import wx
    
    
    class MyFrame(wx.Frame):
        def __init__(self, parent, id):
            wx.Frame.__init__(self, parent, id, title="创建TextCtrl类", size=(400, 300))
            #创建面板
            panel = wx.Panel(self)
            # 创建文本和输入框
            self.title = wx.StaticText(panel, label="请输入用户名和密码", pos=(140, 20))
            self.label_user = wx.StaticText(panel, label="用户名:", pos=(50, 50))
            self.text_user = wx.TextCtrl(panel, pos=(100, 50), size=(235, 25), style=wx.TE_LEFT)
            self.label_pwd = wx.StaticText(panel, pos=(50, 90), label="密   码:")
            self.text_password = wx.TextCtrl(panel, pos=(100, 90), size=(235, 25), style=wx.TE_PASSWORD)
    
    
    if __name__ == '__main__':
        app = wx.App()                      # 初始化应用
        frame = MyFrame(parent=None, id=-1)  # 实例MyFrame类,并传递参数
        frame.Show()                        # 显示窗口
        app.MainLoop()                      # 调用主循环方法
    

    执行结果:

    Button按钮类

    wx.Button(parent, id, lable, pos, size=wx.DefaultSize, style=0, validator, name="button")
    

    wx.Button和wx.TextCtrl的参数基本相同,其中参数lable是显示在按钮上的文本

    示例代码:

    # -*- coding:utf-8 -*-
    import wx
    
    
    class MyFrame(wx.Frame):
        def __init__(self, parent, id):
            wx.Frame.__init__(self,  parent, id,  title="创建TextCtrl类", size=(400,  300))
    
            panel = wx.Panel(self)  # 创建面板
            # 创建文本和输入框
            self.title = wx.StaticText(panel, label="请输入用户名和密码", pos=(140, 20))
            self.label_user = wx.StaticText(panel, label="用户名:", pos=(50, 50))
            self.text_user = wx.TextCtrl(panel, pos=(100, 50), size=(235, 25), style=wx.TE_LEFT)
            self.label_pwd = wx.StaticText(panel, pos=(50, 90), label="密   码:")
            self.text_password = wx.TextCtrl(panel, pos=(100, 90), size=(235, 25), style=wx.TE_PASSWORD)
    
            self.bt_confirm = wx.Button(panel, label='确定', pos=(105, 130))  # 创建“确定”按钮
            self.bt_cancel = wx.Button(panel, label='取消', pos=(195, 130))  # 创建“取消”按钮
    
    
    if __name__ == '__main__':        
        app = wx.App()                      # 初始化
        frame = MyFrame(parent=None, id=-1)  # 实例MyFrame类,并传递参数    
        frame.Show()                        # 显示窗口
        app.MainLoop()                      # 调用主循环方法
    

    执行结果:

    绑定事件

    当我们点击按钮后需要让系统做出相应的响应,如执行某个判断并给出提示,使用Bind()方法可以将事件处理函数绑定到给定的事件上:

    bt_confirm.Bind(wx.EVT_BUTTON, OnclickSubmit)
    

    示例代码:

    点击确定,判断密码是否正确等

    # -*- coding:utf-8 -*-
    import wx
    
    
    class MyFrame(wx.Frame):
        def __init__(self,  parent,  id):
            wx.Frame.__init__(self,  parent,  id,  '用户登录',  size=(400,  300))
            # 创建面板
            panel = wx.Panel(self)
    
            # 创建“确定”和“取消”按钮, 并绑定事件
            self.bt_confirm = wx.Button(panel,  label='确定')
            self.bt_confirm.Bind(wx.EVT_BUTTON, self.OnclickSubmit)
            self.bt_cancel = wx.Button(panel,  label='取消')
            self.bt_cancel.Bind(wx.EVT_BUTTON, self.OnclickCancel)
            # 创建文本,左对齐        
            self.title = wx.StaticText(panel,  label="请输入用户名和密码")
            self.label_user = wx.StaticText(panel,  label="用户名:")
            self.text_user = wx.TextCtrl(panel,  style=wx.TE_LEFT)
            self.label_pwd = wx.StaticText(panel,  label="密   码:")
            self.text_password = wx.TextCtrl(panel,  style=wx.TE_PASSWORD)
            # 添加容器,容器中控件按横向并排排列
            hsizer_user = wx.BoxSizer(wx.HORIZONTAL)
            hsizer_user.Add(self.label_user,  proportion=0,  flag=wx.ALL,  border=5)
            hsizer_user.Add(self.text_user,  proportion=1,  flag=wx.ALL,  border=5)
            hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL)
            hsizer_pwd.Add(self.label_pwd,  proportion=0,  flag=wx.ALL,  border=5)
            hsizer_pwd.Add(self.text_password,  proportion=1,  flag=wx.ALL,  border=5)
            hsizer_button = wx.BoxSizer(wx.HORIZONTAL)
            hsizer_button.Add(self.bt_confirm,  proportion=0,  flag=wx.ALIGN_CENTER,  border=5)
            hsizer_button.Add(self.bt_cancel,  proportion=0,  flag=wx.ALIGN_CENTER,  border=5)
            # 添加容器,容器中控件按纵向并排排列
            vsizer_all = wx.BoxSizer(wx.VERTICAL)
            vsizer_all.Add(self.title,  proportion=0,  flag=wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER, 
                            border=15)
            vsizer_all.Add(hsizer_user,  proportion=0,  flag=wx.EXPAND | wx.LEFT | wx.RIGHT,  border=45)
            vsizer_all.Add(hsizer_pwd,  proportion=0,  flag=wx.EXPAND | wx.LEFT | wx.RIGHT,  border=45)
            vsizer_all.Add(hsizer_button,  proportion=0,  flag=wx.ALIGN_CENTER | wx.TOP,  border=15)
            panel.SetSizer(vsizer_all)
    
        def OnclickSubmit(self, event):
            """ 点击确定按钮,执行方法 """
            message = ""
            username = self.text_user.GetValue()     # 获取输入的用户名
            password = self.text_password.GetValue()  # 获取输入的密码
            if username == "" or password == "":    # 判断用户名或密码是否为空
                message = '用户名或密码不能为空'
            elif username == 'admin' and password == '123456':  # 用户名和密码正确
                message = '登录成功'
            else:
                message = '用户名和密码不匹配'            # 用户名或密码错误   
            wx.MessageBox(message)                        # 弹出提示框          
    
        def OnclickCancel(self, event):  # 没有event点击取消会报错
            """ 点击取消按钮,执行方法 """
            self.text_user.SetValue("")     # 清空输入的用户名                              
            self.text_password.SetValue("")  # 清空输入的密码
    
    
    if __name__ == '__main__':
        app = wx.App()                      # 初始化
        frame = MyFrame(parent=None, id=-1)  # 实例MyFrame类,并传递参数    
        frame.Show()                        # 显示窗口
        app.MainLoop()                      # 调用主循环方法
    

    执行结果:

    展开全文
  • Python GUI界面编程-初识

    千次阅读 2020-05-02 16:46:54
    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过...
    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过在显示屏的特定位置,以"各种美观而不单调的视觉消息"提示用户"状态的改变",势必得比简单的消息呈现花上更多的计算能力。

    GUI概述

    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过在显示屏的特定位置,以"各种美观而不单调的视觉消息"提示用户"状态的改变",势必得比简单的消息呈现花上更多的计算能力。在 GUI 中,并不只是键入文本和返回文本,用户可以看到窗口、按钮、文本框等图形,而且可以用鼠标单击,还可以通过键盘键入,GUI 是与程序交互的一种不同的方式。

    Python GUI常用框架

    Flexx

    Flexx是一个纯Python工具包,用于创建图形用户界面(GUI),它使用Web技术进行渲染。 应用程序完全用Python编写;PScript转换器动态生成必要的JavaScript。
    Python GUI界面编程-初识Python GUI界面编程-初识
    项目地址:https://github.com/flexxui/flexx
    入门指南:https://flexx.readthedocs.io/en/stable/guide/index.html
    安装
    Flexx需要Python 3.5+,也适用于pypy。 此外,它还依赖以下的库:

    要安装最新版本(和依赖项),请使用以下任一命令:

    pip install flexx
    conda install flexx -c conda-forge
    或者用以下方法来获得更新:

    pip install https://github.com/flexxui/flexx/archive/master.zip

    wxPython

    wxPython是用于Python编程语言的跨平台GUI工具箱。它允许Python程序员轻松,轻松地创建具有健壮,功能强大的图形用户界面的程序。它是作为一组Python扩展模块实现的,这些模块包装了用C ++编写的流行wxWidgets跨平台库的GUI组件 。
    官网:https://www.wxpython.org/
    Python GUI界面编程-初识Python GUI界面编程-初识

    Kivy

    Kivy是开源Python函式库,用于开发行动应用程序和其它采用自然用户界面的多点触控应用软件。它可以在Android,iOS,Linux,OS X和Windows执行。采用MIT授权条款,Kivy是自由并且开源的软件。
    Python GUI界面编程-初识Python GUI界面编程-初识
    官网:https://kivy.org/

    PyQt

    PyQt是Qt公司 Qt应用程序框架的一组Python v2和v3绑定,可在Qt支持的所有平台上运行,包括Windows,OS X,Linux,iOS和Android。PyQt5支持Qt v5。PyQt4支持Qt v4,并将针对Qt v5进行构建。绑定是作为一组Python模块实现的,包含1000多个类。
    官网:https://www.riverbankcomputing.com/software/pyqt/intro
    Python GUI界面编程-初识Python GUI界面编程-初识

    Tkinter

    Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。
    Python GUI界面编程-初识Python GUI界面编程-初识
    索引:https://wiki.python.org/moin/TkInter

    Pywin32

    Windows Pywin32允许你像VC一样的形式来使用PYTHON开发win32应用。代码风格可以类似win32 sdk,也可以类似MFC,由你选择。如果你仍不放弃vc一样的代码过程在python下,那么这就是一个不错的选择。
    项目地址:https://github.com/mhammond/pywin32

    PyGTK

    PyGTK让你用Python轻松创建具有图形用户界面的程序
    Python GUI界面编程-初识Python GUI界面编程-初识
    官网:https://pygobject.readthedocs.io/en/latest/

    创建应用程序

    使用wxPython框架

    安装

    Windwos与MAC平台使用pip工具安装wxPython只需要一行命令:
    pip install -U wxPython
    Python GUI界面编程-初识Python GUI界面编程-初识
    Linux平台:

    由于发行版和wx端口(GTK2或GTK3)有多种选项,因此文件不能全部位于同一文件夹中,以便通过pip轻松访问。这只是意味着您需要进一步细化以找到要提供给pip的URL。例如,要获取适用于Ubuntu 16.04(和16.10,LinuxMint 18以及其他版本)的GTK3 wxPython构建,可以使用如下pip命令:
    pip install -U \
    -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \
    wxPython

    准备

    注意:本部分知识来源与网络
    使用wxPython之前,先了解两个基础对象:应用程序对象和顶级窗口。
    应用程序对象管理主事件循环,主事件循环是wxPython程序的动力。如果没有应用程序对象,wxPython应用程序将不能运行。
    顶级窗口通常用于管理最重要的数据,控制并呈现给用户。
    两个基础对象和应用程序的其他部分之间的关系如下图所示:
    Python GUI界面编程-初识Python GUI界面编程-初识
    这个应用程序对象拥有顶级窗口和主循环事件。顶级窗口管理其窗口中的组件和其他的分配给它的数据对象。窗口和它的组件触发的事件基于用户的动作,并接受事件通知以便改变显示。

    Hell Word

    代码:
    import wx
    app = wx.App(False)
    frame = wx.Frame(None,wx.ID_ANY,"Hello,world!!!_Linux就该这么学")
    frame.Show(show=True)
    app.MainLoop()
    Python GUI界面编程-初识Python GUI界面编程-初识解析:Python GUI界面编程-初识Python GUI界面编程-初识注意:

    • 可以用-1来替代wx.ID_ANY,-1 就是默认值的意思。另外wxWidgets还提供了其它的标准 ID(v2.8)。 你也可以自定义一个ID,但Getting Started with wxPython 认为,没有理由那样做,用标准ID更好。
    • wx.Frame的完整语法是:
      wx.Frame(parent, id=-1, title="", pos=wx.DefaultPosition,size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE,name="frame")
      parent:框架的父窗口。如果是顶级窗口,这个值是None。
      id:关于新窗口的wxPython ID号。通常设为-1,让wxPython自动生成一个新的ID。
      title:窗口的标题。
      pos:一个wx.Point对象,它指定这个新窗口的左上角在屏幕中的位置。在图形用户界面程序中,通常(0,0)是显示器的左上角。这个默认值(-1,-1)将让系统决定窗口的位置。
      size:一个wx.Size对象,它指定这个窗口的初始尺寸。这个默认值(-1,-1)将让系统决定窗口的初始尺寸。
      style:指定窗口的类型的常量。可以使用或运算来组合它们。
      name:框架内在的名字。可以使用它来寻找这个窗口。

    Python GUI界面编程-初识篇到此结束,感谢您的阅读,愿您可从此文获取收获。

    展开全文
  • 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过...

    5dd22eaf1e5fdc39864d533dbb029b7d.png

    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过在显示屏的特定位置,以"各种美观而不单调的视觉消息"提示用户"状态的改变",势必得比简单的消息呈现花上更多的计算能力。

    GUI概述

    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过在显示屏的特定位置,以"各种美观而不单调的视觉消息"提示用户"状态的改变",势必得比简单的消息呈现花上更多的计算能力。在 GUI 中,并不只是键入文本和返回文本,用户可以看到窗口、按钮、文本框等图形,而且可以用鼠标单击,还可以通过键盘键入,GUI 是与程序交互的一种不同的方式。

    Python GUI常用框架

    Flexx

    Flexx是一个纯Python工具包,用于创建图形用户界面(GUI),它使用Web技术进行渲染。 应用程序完全用Python编写;PScript转换器动态生成必要的JavaScript。

    a42a9620b34983d1d94c78d14523cf11.png


    项目地址:https://github.com/flexxui/flexx
    入门指南:https://flexx.readthedocs.io/en/stable/guide/index.html安装
    Flexx需要Python 3.5+,也适用于pypy。 此外,它还依赖以下的库:

    • Tornado库(纯Python)。
    • PScript库(纯Python flexxui项目)
    • Webruntime库(纯Python flexxui项目)
    • Dialite库(纯Python flexxui项目)

    要安装最新版本(和依赖项),请使用以下任一命令:

    pip install flexxconda install flexx -c conda-forge
    或者用以下方法来获得更新:

    pip install https://github.com/flexxui/flexx/archive/master.zip

    wxPython

    wxPython是用于Python编程语言的跨平台GUI工具箱。它允许Python程序员轻松,轻松地创建具有健壮,功能强大的图形用户界面的程序。它是作为一组Python扩展模块实现的,这些模块包装了用C ++编写的流行wxWidgets跨平台库的GUI组件 。
    官网:https://www.wxpython.org/

    82f62bbd7521550cf96232712cd551c8.png

    Kivy

    Kivy是开源Python函式库,用于开发行动应用程序和其它采用自然用户界面的多点触控应用软件。它可以在Android,iOS,Linux,OS X和Windows执行。采用MIT授权条款,Kivy是自由并且开源的软件。

    0b0c365084b569f7a5162422c5f2a1e6.png


    官网:https://kivy.org/

    PyQt

    PyQt是Qt公司 Qt应用程序框架的一组Python v2和v3绑定,可在Qt支持的所有平台上运行,包括Windows,OS X,Linux,iOS和Android。PyQt5支持Qt v5。PyQt4支持Qt v4,并将针对Qt v5进行构建。绑定是作为一组Python模块实现的,包含1000多个类。
    官网:https://www.riverbankcomputing.com/software/pyqt/intro

    1855f6973e5cc250ef135a791149b01e.png

    Tkinter

    Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。

    102e6d12be3afdf5cc45f585f30847f4.png


    索引:https://wiki.python.org/moin/TkInter

    Pywin32

    Windows Pywin32允许你像VC一样的形式来使用PYTHON开发win32应用。代码风格可以类似win32 sdk,也可以类似MFC,由你选择。如果你仍不放弃vc一样的代码过程在python下,那么这就是一个不错的选择。
    项目地址:https://github.com/mhammond/pywin32

    PyGTK

    PyGTK让你用Python轻松创建具有图形用户界面的程序

    cc6a53e3012be0bc537ff02fe7f8ff98.png


    官网:https://pygobject.readthedocs.io/en/latest/

    创建应用程序

    使用wxPython框架

    安装

    Windwos与MAC平台使用pip工具安装wxPython只需要一行命令:pip install -U wxPython

    aae36f33d52eac8b35845d6d96e67f62.png


    Linux平台:

    由于发行版和wx端口(GTK2或GTK3)有多种选项,因此文件不能全部位于同一文件夹中,以便通过pip轻松访问。这只是意味着您需要进一步细化以找到要提供给pip的URL。例如,要获取适用于Ubuntu 16.04(和16.10,LinuxMint 18以及其他版本)的GTK3 wxPython构建,可以使用如下pip命令:
    pip install -U 
    -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 
    wxPython

    准备

    注意:本部分知识来源与网络
    使用wxPython之前,先了解两个基础对象:应用程序对象和顶级窗口。
    应用程序对象管理主事件循环,主事件循环是wxPython程序的动力。如果没有应用程序对象,wxPython应用程序将不能运行。
    顶级窗口通常用于管理最重要的数据,控制并呈现给用户。
    两个基础对象和应用程序的其他部分之间的关系如下图所示:

    b43622771eb7d86a2e2dae625c1df6b5.png


    这个应用程序对象拥有顶级窗口和主循环事件。顶级窗口管理其窗口中的组件和其他的分配给它的数据对象。窗口和它的组件触发的事件基于用户的动作,并接受事件通知以便改变显示。

    Hell Word

    代码:import wxapp = wx.App(False)frame = wx.Frame(None,wx.ID_ANY,"Hello,world!!!_Linux就该这么学")frame.Show(show=True)app.MainLoop()

    5cce9ea7b3f21dbb4034d7aaf0e8226c.png

    解析:

    94f3867f38cba1b95ca2edfce23d9fa3.png

    注意:

    • 可以用-1来替代wx.ID_ANY,-1 就是默认值的意思。另外wxWidgets还提供了其它的标准 ID(v2.8)。 你也可以自定义一个ID,但Getting Started with wxPython 认为,没有理由那样做,用标准ID更好。
    • wx.Frame的完整语法是:wx.Frame(parent, id=-1, title="", pos=wx.DefaultPosition,size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE,name="frame")
      parent:框架的父窗口。如果是顶级窗口,这个值是None。
      id:关于新窗口的wxPython ID号。通常设为-1,让wxPython自动生成一个新的ID。
      title:窗口的标题。
      pos:一个wx.Point对象,它指定这个新窗口的左上角在屏幕中的位置。在图形用户界面程序中,通常(0,0)是显示器的左上角。这个默认值(-1,-1)将让系统决定窗口的位置。
      size:一个wx.Size对象,它指定这个窗口的初始尺寸。这个默认值(-1,-1)将让系统决定窗口的初始尺寸。
      style:指定窗口的类型的常量。可以使用或运算来组合它们。
      name:框架内在的名字。可以使用它来寻找这个窗口。

    Python GUI界面编程-初识篇到此结束,感谢您的阅读,愿您可从此文获取收获。

    展开全文
  • 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过...

    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过在显示屏的特定位置,以"各种美观而不单调的视觉消息"提示用户"状态的改变",势必得比简单的消息呈现花上更多的计算能力。

    GUI概述

    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过在显示屏的特定位置,以"各种美观而不单调的视觉消息"提示用户"状态的改变",势必得比简单的消息呈现花上更多的计算能力。在 GUI 中,并不只是键入文本和返回文本,用户可以看到窗口、按钮、文本框等图形,而且可以用鼠标单击,还可以通过键盘键入,GUI 是与程序交互的一种不同的方式。

    Python GUI常用框架

    Flexx

    Flexx是一个纯Python工具包,用于创建图形用户界面(GUI),它使用Web技术进行渲染。 应用程序完全用Python编写;PScript转换器动态生成必要的JavaScript。

    15b897f3cc750d0ab52653f24538fc3e.png

    项目地址:https://github.com/flexxui/flexx入门指南:https://flexx.readthedocs.io/en/stable/guide/index.html安装Flexx需要Python 3.5+,也适用于pypy。 此外,它还依赖以下的库:

    • Tornado库(纯Python)。
    • PScript库(纯Python flexxui项目)
    • Webruntime库(纯Python flexxui项目)
    • Dialite库(纯Python flexxui项目)

    要安装最新版本(和依赖项),请使用以下任一命令:

    pip install flexxconda install flexx -c conda-forge或者用以下方法来获得更新:

    pip install https://github.com/flexxui/flexx/archive/master.zip

    wxPython

    wxPython是用于Python编程语言的跨平台GUI工具箱。它允许Python程序员轻松,轻松地创建具有健壮,功能强大的图形用户界面的程序。它是作为一组Python扩展模块实现的,这些模块包装了用C ++编写的流行wxWidgets跨平台库的GUI组件 。官网:https://www.wxpython.org/

    3da6ee94eb124700f63b06ef1f112f9e.png

    Kivy

    Kivy是开源Python函式库,用于开发行动应用程序和其它采用自然用户界面的多点触控应用软件。它可以在Android,iOS,Linux,OS X和Windows执行。采用MIT授权条款,Kivy是自由并且开源的软件。

    aa8a23d0dc6b171d405b8d68858e9716.png

    官网:https://kivy.org/

    PyQt

    PyQt是Qt公司 Qt应用程序框架的一组Python v2和v3绑定,可在Qt支持的所有平台上运行,包括Windows,OS X,Linux,iOS和Android。PyQt5支持Qt v5。PyQt4支持Qt v4,并将针对Qt v5进行构建。绑定是作为一组Python模块实现的,包含1000多个类。官网:https://www.riverbankcomputing.com/software/pyqt/intro

    d0aea7a6d87816284fde9c02b86ddbe5.png

    Tkinter

    Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。

    9c9ab99ab254fb4af9fbb6584d231b0c.png

    索引:https://wiki.python.org/moin/TkInter

    Pywin32

    Windows Pywin32允许你像VC一样的形式来使用PYTHON开发win32应用。代码风格可以类似win32 sdk,也可以类似MFC,由你选择。如果你仍不放弃vc一样的代码过程在python下,那么这就是一个不错的选择。项目地址:https://github.com/mhammond/pywin32

    PyGTK

    PyGTK让你用Python轻松创建具有图形用户界面的程序

    2cae3b2ba34cbb72e4d62cfd84f1b55c.png

    官网:https://pygobject.readthedocs.io/en/latest/

    创建应用程序

    使用wxPython框架

    安装

    Windwos与MAC平台使用pip工具安装wxPython只需要一行命令:pip install -U wxPython

    4fba29958b2aaaed8746ef0b14b198e5.png

    Linux平台:

    由于发行版和wx端口(GTK2或GTK3)有多种选项,因此文件不能全部位于同一文件夹中,以便通过pip轻松访问。这只是意味着您需要进一步细化以找到要提供给pip的URL。例如,要获取适用于Ubuntu 16.04(和16.10,LinuxMint 18以及其他版本)的GTK3 wxPython构建,可以使用如下pip命令:pip install -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 wxPython

    准备

    注意:本部分知识来源与网络使用wxPython之前,先了解两个基础对象:应用程序对象和顶级窗口。应用程序对象管理主事件循环,主事件循环是wxPython程序的动力。如果没有应用程序对象,wxPython应用程序将不能运行。顶级窗口通常用于管理最重要的数据,控制并呈现给用户。两个基础对象和应用程序的其他部分之间的关系如下图所示:

    cef785ca26a8b3a626e2a95f3c89e3a8.png

    这个应用程序对象拥有顶级窗口和主循环事件。顶级窗口管理其窗口中的组件和其他的分配给它的数据对象。窗口和它的组件触发的事件基于用户的动作,并接受事件通知以便改变显示。

    Hell Word

    代码:import wx
    app = wx.App(False)
    frame = wx.Frame(None,wx.ID_ANY,"Hello,world!!!_Linux就该这么学")
    frame.Show(show=True)
    app.MainLoop()

    cd5b3a87180ed0b6d5b670d79102b9ce.png

    解析:

    8770ebcb3ab09a59648bc06e90e57b7b.png

    注意:

    • 可以用-1来替代wx.ID_ANY,-1 就是默认值的意思。另外wxWidgets还提供了其它的标准 ID(v2.8)。 你也可以自定义一个ID,但Getting Started with wxPython 认为,没有理由那样做,用标准ID更好。
    • wx.Frame的完整语法是:
      wx.Frame(parent, id=-1, , pos=wx.DefaultPosition,size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE,name="frame")
      parent:框架的父窗口。如果是顶级窗口,这个值是None。
      id:关于新窗口的wxPython ID号。通常设为-1,让wxPython自动生成一个新的ID。
      title:窗口的标题。
      pos:一个wx.Point对象,它指定这个新窗口的左上角在屏幕中的位置。在图形用户界面程序中,通常(0,0)是显示器的左上角。这个默认值(-1,-1)将让系统决定窗口的位置。
      size:一个wx.Size对象,它指定这个窗口的初始尺寸。这个默认值(-1,-1)将让系统决定窗口的初始尺寸。
      style:指定窗口的类型的常量。可以使用或运算来组合它们。
      name:框架内在的名字。可以使用它来寻找这个窗口。

    Python GUI界面编程-初识篇到此结束,感谢您的阅读,愿您可从此文获取收获。

    本文原创地址:https://www.linuxprobe.com/python-gui-gettoknow.html编辑:坑人小妖精,审核员:逄增宝

    展开全文
  • 了解什么是GUI和常用的GUI框架 了解如何安装GUI框架wxPython 掌握如何使用wxPython框架创建一个应用程序 掌握wxPython框架中提供的常用控件 掌握BoxSizer布局的应用 掌握如何进行事件处理 15.1 初识GUI ...
  • 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。然而这界面若要通过...
  • 全栈工程师开发手册 (作者:栾鹏)pythonGUI界面编程,常用的几个python库包含如下:Tkinter:Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter可以在大多数的 Unix 平台下使用,同样可以...
  • 本文实例讲述了Python GUI编程。分享给大家供大家参考,具体如下:import osfrom time import sleepfrom tkinter import *from tkinter.messagebox import showinfoclass DirList(object):def __init__(self, ...
  • 字符串转 md5 工具(Python.../usr/bin/env python# -*- coding: utf-8 -*-from tkinter import *import hashlibimport timeLOG_LINE_NUM = 0class MY_GUI():def __init__(self,init_window_name):self.init_window_n...
  • python应用系列教程——pythonGUI界面编程Tkinter全解

    万次阅读 多人点赞 2017-10-27 14:50:28
    pythonGUI界面编程,主要由Tkinter、Tix、tkMessageBox 几个库提供,当然有更新的更美观的库大家可以去搜索。在库中定义了一些基础控件对象,和组合控件对象。可以在创建控件时传递控件属性,也可以在创建了控件...
  • 一、简介在Qt(和大多数用户界面)中,“小部件”是用户可以与之交互的UI组件的名称。用户界面由布置在窗口内的多个小部件组成。Qt带有大量可用的小部件,也允许您创建自己的自定义和自定义小部件。二、小部件列表Qt...
  • 工具栏工具栏是最常见的用户界面元素之一。工具栏是用于在应用程序中执行常见任务的图标和文本栏。Qt工具栏支持图标,文本的显示,还可以包含任何标准Qt小部件。但是,对于按钮,最好的方法是利用QAction系统在工具...
  • pythonGUI界面编程常用的几个python库包含如下 Tkinter Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,318
精华内容 527
关键字:

pythongui界面编程

python 订阅