wxPython 1 - 图形用户界面初认识

wxPython 1 - 图形用户界面初认识,第1张

图形用户界面

图形用户界面,即 GUI(Graphical User Interface)。这种编程技术是非常重要的。Python 可以开发一些传统桌面应用,这一方面的工具包自然是有不少的。其中,除了内置的 Tkinter 和第三方库 PyQt 等库外, wxPython 因为其丰富的控件及完善的帮助文档,成为了 Python 的该领域中一个非常不错的选择。

安装 wxPython

wxPython 的安装非常方便,直接用 pip 安装即可。
pip install wxPython
如果安装过程中出现问题,可以参见 wxPython ,即官方提供的教程。

了解 wxPython

安装完 wxPython 工具包,就可以开始学习了。wxPython 作为一个 GUI 开发包,主要有一下四种内容:

  1. 窗口;
  2. 控件;
  3. 事件处理;
  4. 布局管理。

这四种不同的内容分别对应着不同的根类:

  1. wx.Window
  2. wx.Control
  3. wx.EvtHandler
  4. wx.Sizer
第一个 wxPython 程序

一般来说,为了使代码清晰并让窗口有较为完整的功能,一般都会通过定义 Frame 类的子类来实现。但该示例仅要展示一个窗口的实现的几个必备步骤,暂使用极为简单的代码创建出一个窗口,而不向其加入控件以及其他元素。代码如下。

# wxPython1.py

from wx import *

myApp = App()
myFrame = Frame(None, title="第一个wxPython程序", size=(200, 150), pos=(300, 225))

myFrame.Show()
myApp.MainLoop()

至此,第一个 wxPython 程序就大功告成了。如果一切正常的话,将会看到如下一个窗口:

很明显,这个程序仅有标题和灰色的背景。这个程序还是过于简单了。那么这个程序大致分为如下几步:

  1. 创建 myApp App 对象;
  2. 创建 myFrame Frame 对象;
  3. 显示 myFrame;
  4. myApp 进入主事件循环。

其中,只有 Frame 创建时的几个参数值得说明一下。
第一个参数 None ,是该窗口的父窗口 parent ,在有些情况下是可以设置的,不过一般来说,作为简单的程序,这个参数往往都是 None 。
第二个参数 title ,显然是设置窗口标题的。
第三、四个参数 size 和 pos ,分别设置了窗口的大小及位置。这两个参数都是元组类型,第一项为横向的参数,第二项为纵向的参数。需要注意的是,这里的位置 pos 在后续的应用中往往被省去,而用其他的方法代替。

程序完善

至此,根据上文的说明,写一个 GUI 程序的流程大致如此。利用同样的原理及参数,可以将以上程序改为一个完整的 wxPython 制作的小程序了。

# wxPython1.py

from wx import *

# myApp = App()
# myFrame = Frame(None, title="第一个wxPython程序", size=(600, 400), pos=(300, 225))
#
# myFrame.Show()
# myApp.MainLoop()


class MyFrame(Frame):

    def __init__(self):
        super(MyFrame, self).__init__(None, title="第一个wxPython程序", size=(600, 400), pos=(300, 225))


class MyApp(App):

    def OnInit(self):
        frame = MyFrame()
        frame.Show()

        return True

    def OnExit(self):
        print("程序结束")

        return 0


if __name__ == "__main__":
    app = MyApp()

    app.MainLoop()

这个程序流程与之前的基本一样,运行结果也没有不同,只在判断主模块这里,一般在 GUI 程序的主模块中总是习惯于加入这一段。当然,如果整个程序只包含一个文件时完全可以去掉这点。

具体对于完善后的程序还有一些出入,在下篇文章中将会讲解。这篇教程就到此为止了,再见!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/719101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存