GUI(图形用户界面)简介

电脑杂谈  发布时间:2020-05-06 13:13:18  来源:网络整理

c图形界面编程_matlab图形用户界面设计_图形,用户界面

Python有很多图形用户界面工具集. 三大巨头是Tkinter,wxPython和PyQt. 它们都可以支持Windows,macOS和Linux操作系统,而PyQt也支持移动设备.

图形用户界面是由窗口,按钮和许多其他小部件组成的应用程序. 用户可以基于这些小部件与您的应用程序进行交互. 举例说明图像,例如浏览器. 在浏览器的地址栏中,用户可以输入地址,访问网站,并通过上一个或下一个按钮可以返回或前进到历史操作等.

通过本文,您可以学习使用Python图形用户界面工具集wxPython构建图形用户界面应用程序. 内容包括:

让我们开始吧

wxPython工具集是一个名为wxWidgets的库,该库将C ++包装在Python中. wxPython的初始版本于1998年发布,因此wxPython已经存在了很长时间. wxPython与PyQt或TKinter的不同之处在于,wxPython尽可能在本机平台上使用实际的小部件. 这使wxPython应用程序看起来像在运行本机操作系统.

PyQt和Tkinter都绘制自己的小部件,这就是为什么尽管PyQt与wxPython非常接近的原因,但它们并不总是与本机小部件匹配.

这并不是说wxPython不支持自定义窗口小部件. 实际上,wxPython有许多自定义小部件,包括数十个核心小部件. 为了学习这些小部件,我将在文章末尾提供参考文章,其中包含许多小部件应用程序示例,可以在没有Internet的情况下下载以供参考和学习,这太方便了哈哈.

本文使用wxPython4的最新版本,也称为Phoenix版本. wxPython3版本和wxPython版本仅支持Python2. Robin Dunn是此工具的主要维护者. 他创建了wxPython4版本. 在wxPython版本中,他放弃了许多别名并清理了许多代码,使wxPython更具Pythonic且更易于维护! ! !在这里加鸡腿哈哈

如果您使用的是旧版本图形,用户界面,并且想要迁移到wxPython4版本,则可以参考链接

c图形界面编程_图形,用户界面_matlab图形用户界面设计

wxPython4与Python2.7和Python3兼容. 您可以使用pip安装wxPython4. 在以前的版本中,不支持此安装方法. 现在,您可以通过在终端上键入以下命令来安装它: p>

pip install wxpython

注意: 在Mac OS X上图形,用户界面,您需要安装编译器(例如XCode)才能成功完成安装. 在pip安装程序正常运行之前,Linux可能还需要您安装一些依赖项,例如: freeglut3-dev,libgstreamer-plugins-base0.10-dev和libwebkitgtk-3.0-dev.

我的机器是ubuntu虚拟机,安装过程中出现错误! ! !天哪,当时我真的很沮丧,但我还有其他窍门. 如果使用上述方法安装失败,则可以尝试以下方法:

pip install -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxpython

注意: 请记住将ubuntu的版本更改为系统的版本

如上所述,图形用户界面(GUI)是供用户通过按钮或窗口上的其他组件与应用程序进行交互的界面. 用户界有一些共同的元素:

所有这些元素通常称为零件. wxPython支持许多组件,开发人员将开发一套逻辑以通过这些组件与用户进行交互.

GUI在被用户触发后开始工作. 触发此动作称为事件. 当用户使用鼠标按下应用程序中的按钮或其他窗口小部件时,将触发事件. 在内部,GUI工具包实际上运行着一个无限循环,称为事件循环.

c图形界面编程_图形,用户界面_matlab图形用户界面设计

编写图形用户界面时,您要做的就是触发窗口小部件时,您的应用程序将进行相应的事件处理. 重要的是要注意,在处理事件循环时,可以终止它们. 当您终止事件循环时,GUI将不会响应用户. 处理任何动作,GUI响应时间不应超过0.25秒,并且每个动作应尽可能使用独立线程或进程进行处理. 这样可以防止GUI卡住,并为用户提供更好的医疗检查.

wxPython具有一种特殊的线程安全方法,您可以使用该方法将其反馈给您的应用程序,并让其知道该线程已完成或更新了该线程. 让我们创建一个应用程序框架来演示事件如何工作.

GUI上下文中的应用程序框架是小部件的用户界面,没有任何事件处理程序. 这些对于原型制作很有用. 基本上,您只是创建一个GUI并将其呈现给您的涉众即可在后端逻辑上花费大量时间.

import wx
app = wx.App()
frame = wx.Frame(parent=None, title='Hello World')
frame.Show()
app.MainLoop()

在此示例中,有两个部分,即: wx.App和wx.Frame. wx.App是wxPython的应用程序对象,是运行GUI所必需的. wx.App对象调用.MainLoop()方法,这是上一节中提到的时间循环.

wx.Frame将创建一个与用户交互的界面. 在此示例中,您告诉wxPython该框架没有父框架,其标题是Hello World. 代码如下所示:

Hello World.jpg

默认情况下,wx.Frame将在顶部包含最小化,最大化和退出按钮. 但是,通常不会以这种方式创建应用程序,并且大多数wxPython代码都要求您将wx.Frame和其他小部件作为子类,以便可以充分利用该工具包.

c图形界面编程_matlab图形用户界面设计_图形,用户界面

让我们花点时间重用该类以实现上述功能:

 class MyFrame(wx.Frame):
     def __init__(self):
         super().__init__(parent=None, title='Hello World')
         self.Show()
  
if __name__ = '__main__':
     app = App()
     frame = MyFrame()
     app.MainLoop()

您可以将这些代码用作应用程序的模板. 但是,此应用程序不执行任何操作. 现在,让我们花一点时间来学习其他一些小工具的用法,以便可以将其添加到应用程序中.

wxPython工具集有一百多种小工具可供选择. 它允许您创建一个功能丰富的应用程序,但这也意味着选择正确的小工具是一项艰巨的任务. 有用,因为它具有搜索过滤器功能,可帮助您找到在应用程序中使用的正确小工具. 该地址将在以后提供.

大多数GUI应用程序允许用户输入一些文本,然后单击按钮,让我们还将此功能添加到我们的应用程序中:

import  wx
class MyFrame(wx.Frame):
      def __init__(self):
            super().__init__(parent=None, title='Hello World')
            panel = wx.Panel(self)  
            self.text_ctrl = wx.TextCtrl(panel, pos=(5, 5))
            my_btn = wx.Button(panel, label='Press Me', pos=(5, 55))
   
            self.Show()
  
if __name__ == '__main__':
     app = wx.App()
     frame = MyFrame()
     app.MainLoop()

运行上面的代码时,您的应用程序将显示以下内容:

按下me.jpg

matlab图形用户界面设计_c图形界面编程_图形,用户界面

您需要添加的第一个小部件称为wx.Panel. 不需要此工具,但建议使用. 在Windows上,您实际上需要使用面板,以便框架的背景色是正确的灰色阴影. 如果没有Windows上的Panel,则无法遍历选项卡遍历. 将面板小部件添加到框架中时,面板是框架的唯一子级,它将自动扩展以自行填充框架.

下一步是将wx.TextCtrl添加到面板. 几乎所有小部件的第一个参数是小部件应输入的父级. 在此示例中,您需要文本输入框和房屋面板的键. 在顶部,因此面板是其父级. 这是将面板参数传递给文本输入对象和键对象的第一个参数.

您还需要告诉wxPython这些工具的放置位置. 您可以通过传递位置参数pos来传递参数. 在wxPython中,原始位置是左上角(0,0)的位置,因此对于文本控件,您告诉wxPython您想从左(x)到5像素和5像素开始其左上角. 从顶部开始(Y)

然后,您要在面板上添加按钮控件,并为其命名为Press Me. 为防止控件重叠,您需要为此按钮将y坐标设置为55像素.

当您提供小部件位置的精确坐标时,您使用的技术称为绝对位置. 大多数GUI工具箱都提供此功能,但实际上不建议使用.

随着您的应用程序变得越来越复杂,很难跟踪所有小部件的位置以及是否必须移动小部件. 重置所有这些职位将成为一场噩梦

幸运的是,所有现代GUI工具包都为此提供了解决方案,您将学到

.

wxPython工具箱包含用于创建动态布局的大小调整器. 它们为您管理小部件的位置,并在您调整应用程序窗口的大小时对其进行调整. 其他GUI工具包将sizer称为布局,这是PyQt所做的.

以下是一些您经常使用的上胶机的主要类型:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-200588-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...