wxFormBuilder使用的教程较少,网上的文件源码也少。

最近使用 python 写了一个GUI,可以打开设置文件,并对xlsx文件进行处理,可以将部分信息输出到gui界面,像print输出到cmd框类似,并使用了多线程 处理 数剧及输出信息,防gui界面假死。

都是在网上搜索类似的代码,搞成的。

编译后exe效果:

wxFormBuilder  效果

部分python源码:

源码包含 wxFormBuilder的文件  及python的源码

下载地址:PythonGUI制作实例wxPython使用多线程防假死含wxFormBuilder的文件及源码.rar-Python文档类资源-CSDN下载

python源码:

# -*- coding: utf-8 -*-
###########################################################################
## Python code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
## http://www.wxformbuilder.org/
##
## PLEASE DO *NOT* EDIT THIS FILE!
###########################################################################
# import wx._adv, wx._html, wx._xml
import wx
# import wx.xrc
import openpyxl
# import gc
# import datetime
# import logging
# import logging.config
import time
import os
import threading###########################################################################
## Class CounterThread  多线程类
###########################################################################class CounterThread(threading.Thread):"""多线程类"""def __init__(self, parent):super(CounterThread, self).__init__()  # 继承self.parent = parentself.setDaemon(True)  # 设置为守护线程, 即子线程是守护进程,主线程结束子线程也随之结束。def run(self):workbook1 = openpyxl.load_workbook(huiz_file)ws1 = workbook1.worksheets[0]i1 = ws1.max_rowj1 = ws1.max_columnfor i in range(1, i1 + 1):for j in range(1, j1 + 1):# print('第 %d 行 %d 列内容[ %s ]填入汇总表!' % (i, j, ws1.cell(row=i, column=j).value))# logstr = '共 %d 行 %d 列!' % (i1, j1)# self.logger.error('共 %d 行 %d 列!' % (i1, j1))# self.logger.error('第 %d 行 %d 列内容[ %s ]!' % (i, j, ws1.cell(row=i, column=j).value))msg = '第 %d 行 %d 列内容[ %s ]!' % (i, j, ws1.cell(row=i, column=j).value)wx.CallAfter(self.parent.LogMessage, msg)  # 输出日志count = int(i / i1 * 100)wx.CallAfter(self.parent.update_process_bar, count)  # 更新进度条进度wx.CallAfter(self.parent.button13Enable)  # 激活按钮# print(count)###########################################################################
## Class MyEbomFrame
###########################################################################class MyEbomFrame(wx.Frame):def __init__(self, parent):wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"EBOM TOOL V2.00 By XXXXX", pos=wx.DefaultPosition,size=wx.Size(530, 390), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)self.SetFont(wx.Font(wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_ROMAN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL,False, "宋体"))self.SetForegroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT))self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNHIGHLIGHT))bSizer16 = wx.BoxSizer(wx.VERTICAL)bSizer17 = wx.BoxSizer(wx.VERTICAL)self.m_staticText5 = wx.StaticText(self, wx.ID_ANY, u"EBOM查重工具", wx.DefaultPosition, wx.DefaultSize, 0)self.m_staticText5.Wrap(-1)self.m_staticText5.SetFont(wx.Font(16, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "宋体"))self.m_staticText5.SetForegroundColour(wx.Colour(0, 0, 255))bSizer17.Add(self.m_staticText5, 0, wx.ALIGN_CENTER | wx.ALL, 5)bSizer16.Add(bSizer17, 1, wx.EXPAND, 5)bSizer18 = wx.BoxSizer(wx.HORIZONTAL)self.m_staticText6 = wx.StaticText(self, wx.ID_ANY, u"EBOM文件:", wx.DefaultPosition, wx.DefaultSize, 0)self.m_staticText6.Wrap(-1)bSizer18.Add(self.m_staticText6, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)self.m_textCtrl9 = wx.TextCtrl(self, wx.ID_ANY, u"打开EBOM文件", wx.DefaultPosition, wx.DefaultSize, 0)bSizer18.Add(self.m_textCtrl9, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)self.m_button12 = wx.Button(self, wx.ID_ANY, u"打开", wx.DefaultPosition, wx.DefaultSize, 0)bSizer18.Add(self.m_button12, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)self.m_button13 = wx.Button(self, wx.ID_ANY, u"运行", wx.DefaultPosition, wx.DefaultSize, 0)bSizer18.Add(self.m_button13, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)bSizer16.Add(bSizer18, 1, wx.EXPAND, 5)sbSizer1 = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, u"运行情况"), wx.VERTICAL)self.m_textCtrl8 = wx.TextCtrl(sbSizer1.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition,wx.Size(-1, 220), wx.TE_MULTILINE)sbSizer1.Add(self.m_textCtrl8, 0, wx.EXPAND, 5)self.m_gauge1 = wx.Gauge(sbSizer1.GetStaticBox(), wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize,wx.GA_HORIZONTAL)self.m_gauge1.SetValue(0)sbSizer1.Add(self.m_gauge1, 0, wx.ALL | wx.EXPAND, 5)bSizer16.Add(sbSizer1, 1, wx.EXPAND, 5)self.SetSizer(bSizer16)self.Layout()self.Centre(wx.BOTH)# Connect Eventsself.m_button12.Bind(wx.EVT_BUTTON, self.Ebom_Open)self.m_button13.Bind(wx.EVT_BUTTON, self.Ebom_Run)a = """使用说明>>1)………………2)………………3)………………    """self.m_textCtrl8.AppendText(a)def update_process_bar(self, count):self.m_gauge1.SetValue(count)def LogMessage(self, msg):  # 注册一个消息self.m_textCtrl8.AppendText(msg + "\n")def button13Enable(self):self.m_button12.Enable()self.m_button13.Enable()def __del__(self):pass# Virtual event handlers, override them in your derived classdef Ebom_Open(self, event):wildcard = 'All files(*.xlsx)|*.xlsx'dialog = wx.FileDialog(None, 'select', os.getcwd(), '', wildcard, wx.FD_OPEN)  #####这个部分新旧版本有变化if dialog.ShowModal() == wx.ID_OK:self.m_textCtrl9.SetValue(dialog.GetPath())dialog.Destroy()# def OnOpenFile(self, event):#     wildcard = 'All files(*.*)|*.*'#     dialog = wx.FileDialog(None, 'select', os.getcwd(), '', wildcard, wx.FD_OPEN)  #####这个部分新旧版本有变化#     if dialog.ShowModal() == wx.ID_OK:#         self.FileName.SetValue(dialog.GetPath())#     dialog.Destroy()def Ebom_Run(self, event):global huiz_filehuiz_file = str(self.m_textCtrl9.GetValue())if "xlsx" in huiz_file:self.counter = CounterThread(self)self.counter.start()   # 开启多线程 运行主运算代码及更新GUI显示self.m_button12.Disable()  # 禁用按钮self.m_button13.Disable()  # 禁用按钮else:self.LogMessage('请点击打开,并选择xlsx文件。')def main():app = wx.App(False)frame = MyEbomFrame(None)frame.Show(True)# start the applicationsapp.MainLoop()if __name__ == '__main__':main()

Python GUI制作实例 wxPython使用多线程 防假死含wxFormBuilder的文件及源码相关推荐

  1. Adroid游戏开发实例讲解(五)-哄娃神器之随机五彩泡(附源码)

    Adroid游戏开发实例讲解(五)-哄娃神器之随机五彩泡(附源码) 程序之美 泡泡 一直被孩子认为是神奇的东西.记得儿时,经常 趁大人不注意,偷偷抓一把洗衣粉撞到口袋里,然后自己悄悄的找来一个小瓶子, ...

  2. [附源码]计算机毕业设计Python+uniapp基于android手机设计并实现在线点单系统APPo682z(程序+源码+LW+远程部署)

    [附源码]计算机毕业设计Python+uniapp基于android手机设计并实现在线点单系统APPo682z(程序+源码+LW+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装 ...

  3. Python爬虫鲁迅先生《经典语录》保存到Excel表格(附源码)

    Python爬虫鲁迅先生<经典语录>保存到Excel表格(附源码) 前言 今天用Python 爬取鲁迅先生<经典语录>,直接开整~ 代码运行效果展示 开发工具 Python版本 ...

  4. 计算机毕业设计Python+uniapp基于微信小程序的校园快递代取平台(小程序+源码+LW)

    计算机毕业设计Python+uniapp基于微信小程序的校园快递代取平台(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区 ...

  5. 计算机毕业设计Python+uniapp基于微信小程序点餐与结账系统LW(小程序+源码+LW)

    计算机毕业设计Python+uniapp基于微信小程序点餐与结账系统LW(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区 ...

  6. 超强大的头像制作神器,支持外卖CPS等优惠劵CPS微信小程序源码支持多种流量主模式

    这是一款目前小编见到的强大头像制作小程序 拥有丰富的模板,多种分类基本大全 支持直接获取微信头像,或者直接上传图片 另外上传的话还可以支持对图片修改剪辑等多功能 另外带外卖CPS,打车CPS,餐饮CP ...

  7. 好玩的python代码示例-这可能是最好玩的python GUI入门实例!

    image.png 简单的说,GUI编程就是给程序加上图形化界面. python的脚本开发简单,有时候只需几行代码就能实现丰富的功能,而且python本身是跨平台的,所以深受程序员的喜爱. 如果给程序 ...

  8. python入门代码示例-这可能是最好玩的python GUI入门实例!

    image.png 简单的说,GUI编程就是给程序加上图形化界面. python的脚本开发简单,有时候只需几行代码就能实现丰富的功能,而且python本身是跨平台的,所以深受程序员的喜爱. 如果给程序 ...

  9. python界面长什么样子-这可能是最好玩的python GUI入门实例(推荐)

    简单的说,GUI编程就是给程序加上图形化界面. python的脚本开发简单,有时候只需几行代码就能实现丰富的功能,而且python本身是跨平台的,所以深受程序员的喜爱. 如果给程序加一个图形化界面,那 ...

最新文章

  1. 针孔摄像头屡禁不止?用你手机自带的ToF传感器对付它,检测成功率近90%
  2. Codeforces Round #321 (Div. 2) B. Kefa and Company (尺取)
  3. Kafka 消费者组 Rebalance 详解
  4. Yarn 和 NPM 国内快速镜像(淘宝镜像)
  5. 一键解决Win10 LTSC 2021官方镜像存在的问题
  6. 编译原理入门(一):GNU编辑器(GCC)原理简介
  7. 【游戏行业观察】篇1:成龙与《传奇》:传统网游营销模式的变迁
  8. 微信小程序如何解析标签?
  9. The server time zone value ‘ ‘ is unrecognized or represents more than one time zone
  10. 【小程序自动化Minium】二、元素定位-Page接口中的 get_element() 与 get_elements()
  11. wazuh官方安装指南(中文译版本)
  12. nikebot nike机器人 如何做一个nikebot nike监控怎么能不延迟 nike如何过盾 bot 机器人 snkrs
  13. 非root权限安装mysql
  14. 下一代手机应该会是折叠屏
  15. mount error(112): Host is down
  16. Photoshop 去掉图片上的文字的几个方法(转)
  17. UIApp教程(全网最详细的教程来啦)
  18. 用devc++表白_表白 | 回复4.14号表白32,我也是个乒乓球初学者,可以约球玩玩咩...
  19. 计算机艺术论文,计算机艺术设计教学研究论文
  20. selenium 自动抢课——电子科大自动抢课脚本

热门文章

  1. 集合collection
  2. 51nod 1740蜂巢迷宫
  3. 线性表的顺序存储结构及基本操作
  4. python机器学习实战 getA()函数详解
  5. jbox ajax,JBox演示30种不同的调用方法
  6. python plc fx5u_三菱PLC的FX5U系列参数与定位点
  7. ANC主动降噪蓝牙耳机南A2测评:日常通勤降噪亲民之选!
  8. 解决ipad uiwebview显示网页超过屏幕宽度
  9. iOS 开发 解决UICollectionView的多组头部视图样式不一样复用时发生错乱问题
  10. Win10创建新用户账户