用到了python的GUI包:wxpython

一、

wxPython是Python的GUI图形库。很方便的创建完整的、功能键全的GUI用户界面。 wxPython是作为wxWidgets的Python封装,然后作为模块的方式提供给用户的。

首先安装wxpython:pip install wxpython

安装成功后,开始一个简单GUI之旅:

1.导入 wx 模块

2.定义应用程序类的一个对象

3.创建一个顶层窗口的 wx.Frame 类的对象。 同时给出构造标题和尺寸参数。

4.此时就可以在窗口中添加文本,文本框等各种控件了, 但是通常将一个panel对象添加到框架中,以实现布局更加容易管理

5.添加各种控件

6.通过show()方法激活框架窗口,输入应用程序对象的主事件循环,实现窗口激活显示。

示例code如下:import wx

def changeText(event):

text1.SetValue("hello python")

text2.SetValue("xiaomokuaipao study wxpython")

app = wx.App()

win=wx.Frame(None,title='Xiaomokuaipao-GUI',size=(400,400))

panel = wx.Panel(win)

button1 = wx.Button(panel,label="xiaomo",pos=(100,0),size=(100,30))

button2 = wx.Button(panel,label="kuaipao",pos=(100,30),size=(100,30))

button1.Bind(wx.EVT_BUTTON,changeText)

text1=wx.TextCtrl(panel,pos=(10,60),size=(200,40))

text2=wx.TextCtrl(panel,pos=(10,100),size=(200,200),style=wx.TE_MULTILINE|wx.HSCROLL)

win.Show()

app.MainLoop()

上面code步骤如上所述,同时定义了一个改变文本框文本内容的函数,实现当点击button1的时候,调用changetext函数,向文本框中添加文字。

效果如图:

点击按钮xiaomo后:

二、

对于wxpython构建GUI,wxFormBuilder是一个可视化的界面工具非常好用,非常实用而且能够节约很多时间。

下载地址:https://sourceforge.net/projects/wxformbuilder/

下面介绍使用方法:

1.下载打开wxFormBuilder,在右侧修改项目名字,并将code generation勾选为python,如图:

2.首先点击工具栏的Froms,再点击Frame,如图:

3.点击Layout并选择一种Layout,然后就可以向Frame里添加控件了,如图:

4.下一步就可以添加许需要的控件了,分别有:Common,Additional, Data, Containers, Menu/Toolbar等几大类可以选择。

5.接下来就可以生成我们需要的python 代码了,如图:

6.将生成的代码copy我们项目中就可以直接使用了,当然也可以通过File下面保存项目和代码。

下面代码是用wxFormBuilder做了一个简单的加法和乘法的计算器GUI,并放置了一个时钟在GUI里。# -*- coding: utf-8 -*-

import wx

import wx.xrc

import wx.py.images

import wx.lib.analogclock as ac

class MyFrame(wx.Frame):

def __init__(self, parent):

wx.Frame.__init__(self, parent, id=wx.ID_ANY, title='Xiaomokuaipao-GUI', pos=wx.DefaultPosition,

size=wx.Size(500, 500), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)

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

statusBar = self.CreateStatusBar()

toolbar = self.CreateToolBar()

toolbar.AddSimpleTool(wx.NewId(), wx.py.images.getPyBitmap(), "New", "Long help for 'New'")

#toolbar.AddSimpleTool(wx.NewId(), wx.py.images.getPyBitmap(), "Edit", "Long help for 'Edit'")

toolbar.Realize()

menuBar = wx.MenuBar()

menu1 = wx.Menu()

menu1.Append(wx.NewId(), "&Save as", "Save file")

menu1.Append(wx.NewId(), "&Open", "Open a new file")

menuBar.Append(menu1, "&File")

menu2 = wx.Menu()

menu2.Append(wx.NewId(), "&Copy", "Copy in status bar")

menu2.Append(wx.NewId(), "C&ut", "")

menu2.Append(wx.NewId(), "Paste", "")

menu2.AppendSeparator()

menu2.Append(wx.NewId(), "&Options...", "Display Options")

menuBar.Append(menu2, "&Edit")

self.SetMenuBar(menuBar)

bSizer3 = wx.BoxSizer(wx.VERTICAL)

self.m_staticText5 = wx.StaticText(self, wx.ID_ANY, u"Input 2 number for caculate", wx.DefaultPosition, wx.DefaultSize, 0)

self.m_staticText5.Wrap(-1)

bSizer3.Add(self.m_staticText5, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL, 5)

self.m_textCtrl3 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)

bSizer3.Add(self.m_textCtrl3, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5)

self.m_textCtrl4 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)

bSizer3.Add(self.m_textCtrl4, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5)

self.m_button4 = wx.Button(self, wx.ID_ANY, u"+", wx.DefaultPosition, wx.DefaultSize, 0)

bSizer3.Add(self.m_button4, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5)

self.m_button5 = wx.Button(self, wx.ID_ANY, u"*", wx.DefaultPosition, wx.DefaultSize, 0)

bSizer3.Add(self.m_button5, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5)

self.m_textCtrl5 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)

bSizer3.Add(self.m_textCtrl5, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5)

c1 = ac.AnalogClock(self, pos=(20,220),size=(150, 150))

self.SetSizer(bSizer3)

self.Layout()

self.Centre(wx.BOTH)

# Connect Events

self.m_button4.Bind(wx.EVT_BUTTON, self.pluscaculate)

self.m_button5.Bind(wx.EVT_BUTTON, self.multiplication)

def __del__(self):

pass

# Virtual event handlers, overide them in your derived class

def pluscaculate(self, event):

a=self.m_textCtrl3.GetValue()

b=self.m_textCtrl4.GetValue()

c=str(int(a)+int(b))

self.m_textCtrl5.SetValue(c)

def multiplication(self, event):

a=self.m_textCtrl3.GetValue()

b=self.m_textCtrl4.GetValue()

c=str(int(a)*int(b))

self.m_textCtrl5.SetValue(c)

def main():

app = wx.App(False)

frame = MyFrame(None)

frame.Show(True)

# start the applications

app.MainLoop()

if __name__ == '__main__':

main()

运行代码效果如图:

在文本框里输入数字,点击加号就实现数字相加,点击乘号就实现数字相乘。下图是一个乘法效果:

GUI编程并不是python强项,只是作为兴趣了解,装逼用的时候看一下manual就可以。

python gui编程框架添加工具栏_Python之GUI实现相关推荐

  1. python gui编程框架添加工具栏_python gui编程,我是初学者。用tk,制作下拉菜单的command不分我想打开另一个界面。如和解决,求解!!...

    展开全部 from tkinter import * def new_file(): print("Open new file") def open_file(): print(& ...

  2. python中的框架是什么_python开发框架介绍

    一.Web框架 1.Django: 开源web开发框架,它鼓励快速开发,并遵循MVC设计,比较庞大,开发周期短.Django的文档最完善.市场占有率最高.招聘职位最多.全套的解决方案,Django象R ...

  3. 清华学长告诉你认识 Python GUI编程框架

    1. GUI编程类关系图 ​我们来看看Tkinter 的GUI组件关系图 重要说明: 上述图表示的是相关类的继承关系图,从右到左子类继承父类. (1) 比如:组件Label Label继承->W ...

  4. python核心编程 第3版_Python核心编程(第3版)PDF高清晰完整中文版

    一.书籍简介 <Python核心编程(第3版)>是经典畅销图书<Python核心编程(第二版)>的全新升级版本. <Python核心编程(第3版)>总共分为3部分. ...

  5. python网络编程基础百度云_PYTHON网络编程基础 PDF 下载

    相关截图: 资料简介: <Python网络编程基础>全面介绍了使用Python语言进行网络编程的基础知识,主要内容包括网络基础知识.高级网络操作.Web Services.解析HTML和X ...

  6. Python Web 编程框架

    目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实.但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架开发的常用知识,及目前的4种主流Pytho ...

  7. python核心编程第三版_Python之父:自学python,这3本书能节约你一大半时间编程...

    今天给大家推荐三本书,有两本是属于一个系列,即<Python核心编程>第二版和第三版,一本讲基础和一本讲进阶,非常适合Python的初学者和有一定基础的学习者.还有一本书适合所有想学Pyt ...

  8. 黑马程序员 python快速编程入门课后答案_Python快速编程入门课后程序题答案

    前言 本文只是简单的整理了一下课后习题的编程题,具体的填空.选择.判断可以见:Python快速编程入门课后习题答案 第一章 1.编写一个Python程序,输出如下图效果. ++++++++++ +  ...

  9. python 接口自动化测试框架有哪些_Python接口自动化测试框架

    Python接口自动化测试框架 在自动化的测试体系中,包含了UI自动化测试和接口自动化测试,UI自动化实现的前提是软件版本进入稳定期,UI界面稳定.变动少,相比较之下接口自动化,接口受外界因素的影响较 ...

最新文章

  1. Matlab画地球剖面图,分享用matlab显示地震记录的波形变面积图
  2. 迁移svn项目到git
  3. windows下tomcat自动定时重启方法
  4. 多分类可以分成多个独立的模型来训练
  5. when is OData model initialized - finally found done by Framework
  6. python语言为什么叫python_Python为什么叫Python,Java又如何而来?
  7. 从ListControl控件导出数据到指定路径的的EXCE文档中
  8. 剑指offer——27.二叉树的镜像
  9. 瑞芯微和全志哪个好_瑞芯微和全志科技基本面信息简要对比和整理
  10. 并行计算之路5——CUDA的硬件架构
  11. c语言编程简单教学,C语言入门教程-最简单的C程序
  12. 学校网站建设的必要性
  13. Docker-Harbor:推送镜像/登录失败(Error response from daemon: Get https://reg.harbor.com/v2/: dial tcp 192...)
  14. 【UE4 C++】角色拾取、替换武器(上)
  15. 华为大数据研发第2轮面试
  16. python if嵌套/while嵌套/竞技叠杯
  17. pandas写入excel指定行_使用pandas操作excel
  18. 如何打开电脑c语言窗口,C语言控制台窗口图形界面编程(五). -电脑资料
  19. Linux安装Kibana详细教程
  20. 光端机连接示意图详细连接方式图解

热门文章

  1. 更换高端游戏计算机故障电源,加内存条后电脑重启的解决办法游戏设备故障解决分享!...
  2. php refcount,php的函数的形参refcount为何要加2
  3. linux对磁盘进行分区_如何在Linux中对磁盘进行分区
  4. nginx mozilla_如何开始为Mozilla贡献力量
  5. it devops_DevOps是IT商店的战场
  6. (14)H5新增表单属性
  7. 打卡学习 | Redis原理应用-线程IO模型
  8. Gazebo加载模型时黑屏
  9. microsoft符合服务器加载符号的解决方案
  10. 用linux上网有什么优点,Linux系统的介绍,有什么优点,怎么使用