ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python图形化界面设计wxPython(wxFormBuilder)

2021-11-30 13:58:19  阅读:236  来源: 互联网

标签:__ 界面设计 Python self wxPython wxFormBuilder 图形化 wx


Python图形化界面设计wxPython(wxFormBuilder)

文章目录

一、简介

wxPython是Python的一个图形化界面设计的模块,我们可以使用这个模块来实现图形化界面的设计,wxPython是一个Python包装wxWidgets(这是用 C++ 编写),一个流行的跨平台GUI工具包。由Robin Dunn以及Harri Pasanen开发,wxPython是作为一个Python扩展模块。

就像wxWidgets,wxPython也是一个免费的软件。它可以从官方网站下载: http://wxpython.org. 在本网站上可下载 wxPython 对应操作系统平台二进制和源代码。

在wxPython API主要模块包括一个核心模块。它由 wxObject 类,这是基础 API 的所有类。控制模块包含了所有 GUI 应用程序开发中使用的部件。 例如,wx.Button,wx.StaticText(类似于一个标签),wx.TextCtrl(可编辑的文本控制)等。

wxPython 的API有GDI(图形设备接口)模块。这是一组用于在部件中的绘图类。 如字体,颜色,画笔等类就是其中的一部分。所有的容器窗口类是由 Windows 模块定义。

wxPython 官方网站也主持 Phoenix 工程计划 – 为Python3.* 新实现的wxPython。 它着重于提高速度,可维护性和可扩展性。该项目始于2012年开始,现仍处于测试阶段。

二、 安装wxPython以及wxFormBuilder

1、安装wxPython

在安装wxPython的时候,我们直接使用命令行进行 pip 就可以了,下面给一个wxPython的教程:

1、官网:
https://wxpython.org/pages/overview/
2、教程:
https://www.yiibai.com/wxpython/

http://www.vue5.com/wxpython/wxpython_gui_builder_tools.html

有兴趣的读者可以阅读一下,这里,我们最主要的是希望可以使用wxFormBuilder来实现图形化界面的设计的。

2、安装wxFormBuilder

首先下载,可以通过如下所示的链接下载:
https://sourceforge.net/projects/wxformbuilder/

在这里插入图片描述

三、开始第一个设计

1、选择语言:

在这里插入图片描述

2、创建窗口

我们直接点击按钮添加一个窗口:
在这里插入图片描述

3、添加表单

在这里插入图片描述

4、添加元素

在这里插入图片描述

5、设置属性

在这里插入图片描述

6、绑定按钮的函数

在这里插入图片描述

7、修改样式

在这里插入图片描述

8、获取代码

在这里插入图片描述

9、将代码写入Python文件

# -*- coding: utf-8 -*-

###########################################################################
## Python code generated with wxFormBuilder (version Jun 17 2015)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################

import wx
import wx.xrc


###########################################################################
## Class Test1
###########################################################################

class MyFrame1(wx.Frame):

    def __init__(self, parent):
        wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"Test1", pos=wx.DefaultPosition, size=wx.Size(1090, 709),
                          style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)

        self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)

        bSizer5 = wx.BoxSizer(wx.VERTICAL)

        self.Test = wx.StaticText(self, wx.ID_ANY, u"Test", wx.DefaultPosition, wx.DefaultSize, 0)
        self.Test.Wrap(-1)
        bSizer5.Add(self.Test, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5)

        self.m_textCtrl1 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
        bSizer5.Add(self.m_textCtrl1, 0, wx.ALL | wx.EXPAND, 5)

        self.m_button1 = wx.Button(self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0)
        bSizer5.Add(self.m_button1, 0, wx.ALL | wx.EXPAND, 5)

        self.m_textCtrl2 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
        bSizer5.Add(self.m_textCtrl2, 0, wx.ALL | wx.EXPAND, 5)

        self.SetSizer(bSizer5)
        self.Layout()

        self.Centre(wx.BOTH)

        # Connect Events
        self.m_button1.Bind(wx.EVT_BUTTON, self.multiply)

    def __del__(self):
        pass

    # Virtual event handlers, overide them in your derived class
    def multiply(self, event):
        event.Skip()


在这里插入图片描述

10、调用模块

import class_
import wx


class CalcFrame(class_.MyFrame1):
    def __init__(self, parent):
        class_.MyFrame1.__init__(self, parent)


    def multiply(self, event):
        num = int(self.m_textCtrl1.GetValue())
        self.m_textCtrl2.SetValue(str(num * num))


app = wx.App(False)
# app.locale = wx.Locale(wx.LANGUAGE_CHINESE_SIMPLIFIED)

frame = CalcFrame(None)

frame.Show(True)

# start the applications
app.MainLoop()

在这里插入图片描述

11、运行及其结果

由于在实际操作的时候,我们对样式进行了一点点的调整,所以这里呈现出来的与前面不太一样,只不过是后面我们又一次调整了一下,想必大家也是都会调整的。
在这里插入图片描述

运行一:
在这里插入图片描述
运行二:
在这里插入图片描述
以上就是一个简单的使用wxPython(wxFormBuilder)来进行Gui设计的案例,希望对大家有一些帮助了啦。

最后,谢谢大家的阅读与支持了啦。

谢谢大家啦。

标签:__,界面设计,Python,self,wxPython,wxFormBuilder,图形化,wx
来源: https://blog.csdn.net/m0_54218263/article/details/121630113

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有