python文件执行平台

xiaoxiao2021-02-28  144

# -*- coding: utf-8 -*- __author__ = 'hejunwang' import wx import wx.xrc import wx.aui import sys import threading import os import time # from wx.lib.pubsub import Publisher # 统一使用utf-8格式 default_encoding = 'utf-8' if sys.getdefaultencoding() != default_encoding: reload(sys) sys.setdefaultencoding(default_encoding) ######################################################################## # set the file filter wildcard1 = "All files (*.*)|*.*|" \ "Python source (*.py; *.pyc)|*.py;*.pyc" wildcard2 = "Python source (*.py; *.pyc)|*.py;*.pyc|" \ "All files (*.*)|*.*" ######################################################################## # threading.thread CMD_PYTHON ='python ' class myThread(threading.Thread): def __init__(self, threadID, path, counter, window): threading.Thread.__init__(self) self.threadID = threadID self.window = window self.path = path self.counter = counter self.timeToQuit = threading.Event() self.timeToQuit.clear() def stop(self): self.timeToQuit.set() def run(self): print ('start thread--->') + self.name # 更新界面 msg = "\nTest Starting ... \n" wx.CallAfter(self.window.LogMsg, msg) while self.counter: execname = CMD_PYTHON + self.path os.system(execname) print u"执行的脚本名称%s" % execname print (u'counter time-->%d') % self.counter time.sleep(4) msg = "当前执行线程名称-->%s\n执行脚本-->%s:\n执行当前次数-->%s\n" % (self.threadID, self.path, self.counter) print ("线程名称-->%s:执行脚本-->%s:执行当前次数-->%s") % (self.threadID, self.path, self.counter) wx.CallAfter(self.window.LogMsg, msg) self.counter -= 1 print 'counter-->', self.counter if self.counter == 0: exitFlag = True wx.CallAfter(self.window.updatabtn) if exitFlag: print (u'执行完成') msg = "执行LogMessage最后一次线程名称-->%s:执行脚本-->%s:执行当前次数-->%s\n" % ( self.threadID, self.path, self.counter) wx.CallAfter(self.window.LogMsg, msg) ######################################################################## class MyForm(wx.Frame): # ------------------------------------------------------------------- # set the window layout def __init__(self): wx.Frame.__init__(self, parent=None, id=wx.ID_ANY, title=u"Python脚本执行", pos=wx.DefaultPosition, size=wx.Size(960, 540), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.threads = [] self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) self.m_mgr = wx.aui.AuiManager() self.m_mgr.SetManagedWindow(self) self.m_mgr.SetFlags(wx.aui.AUI_MGR_DEFAULT) # self.m_panel8 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.m_panel8 = wx.Panel(self, -1) self.m_mgr.AddPane(self.m_panel8, wx.aui.AuiPaneInfo().Center().CaptionVisible(False).CloseButton(False).PinButton( True).Dock().Resizable().FloatingSize(wx.DefaultSize).BottomDockable(False).TopDockable( False).LeftDockable(False).RightDockable(False).Floatable(False)) # 绑定窗口的关闭事件 self.Bind(wx.EVT_CLOSE, self.OnWindowClose) bSizer6 = wx.BoxSizer(wx.VERTICAL) bSizer7 = wx.BoxSizer(wx.HORIZONTAL) self.m_staticText2 = wx.StaticText(self.m_panel8, wx.ID_ANY, u"执行文件", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText2.Wrap(-1) bSizer7.Add(self.m_staticText2, 0, wx.ALL, 5) # 文件路径 self.path_text = wx.TextCtrl(self.m_panel8, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) bSizer7.Add(self.path_text, 1, wx.ALL, 5) bSizer6.Add(bSizer7, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_TOP | wx.EXPAND, 5) bSizer71 = wx.BoxSizer(wx.HORIZONTAL) self.m_staticText21 = wx.StaticText(self.m_panel8, wx.ID_ANY, u"执行次数", wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText21.Wrap(-1) bSizer71.Add(self.m_staticText21, 0, wx.ALL, 5) # 执行次数 self.count_text = wx.TextCtrl(self.m_panel8, wx.ID_ANY, u"1", wx.DefaultPosition, wx.DefaultSize, 0) self.count_text.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOBK)) bSizer71.Add(self.count_text, 1, wx.ALL, 5) bSizer6.Add(bSizer71, 0, wx.EXPAND, 5) # 文本显示数据 self.result_text = wx.TextCtrl(self.m_panel8, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.HSCROLL | wx.TE_MULTILINE) bSizer6.Add(self.result_text, 1, wx.ALL | wx.EXPAND, 5) bSizer38 = wx.BoxSizer(wx.HORIZONTAL) self.m_openBtn = wx.Button(self.m_panel8, wx.ID_ANY, u"&OPEN", wx.DefaultPosition, wx.DefaultSize, 0) bSizer38.Add(self.m_openBtn, 1, wx.ALL, 5) self.m_startbtn = wx.Button(self.m_panel8, wx.ID_ANY, u"&START", wx.DefaultPosition, wx.DefaultSize, 0) bSizer38.Add(self.m_startbtn, 1, wx.ALL, 5) self.m_stopBtn = wx.Button(self.m_panel8, wx.ID_ANY, u"&STOP", wx.DefaultPosition, wx.DefaultSize, 0) bSizer38.Add(self.m_stopBtn, 1, wx.ALL, 5) self.m_stopBtn.Disable() bSizer6.Add(bSizer38, 0, wx.EXPAND, 5) self.m_panel8.SetSizer(bSizer6) self.m_panel8.Layout() bSizer6.Fit(self.m_panel8) # 状态栏 self.m_statusBar1 = self.CreateStatusBar(1, wx.ST_SIZEGRIP, wx.ID_ANY) # 将状态栏分割为3个区域,比例为1:2:3 self.m_statusBar1.SetFieldsCount(2) self.m_statusBar1.SetStatusWidths([-1, -2]) # #设置状态栏1内容 # self.statusbar.SetStatusText(u"鼠标位置:" + str(event.GetPositionTuple()), 0) # # #设置状态栏2内容 # self.statusbar.SetStatusText(u"当前线条长度:%s" % len(self.paint.curLine), 1) self.m_menubar1 = wx.MenuBar() menu = wx.Menu() menu1 = wx.Menu() self.menu_clear = menu.Append(-1, u'清除\tCtrl+D') # 第一个下拉菜单 # 分割线 menu.AppendSeparator() self.menu_select = menu.Append(-1, u'全选(N)\tCtrl+A') # 快捷键 第二个下拉菜单 self.menu_exit = menu.Append(-1, u'退出(N)\tCtrl+Z') # 快捷键 第二个下拉菜单 self.Bind(wx.EVT_MENU, self.OnSelect, self.menu_select) self.Bind(wx.EVT_MENU, self.OnMenuClear, self.menu_clear) # 绑定事件处理 self.Bind(wx.EVT_MENU, self.OnWindowClose, self.menu_exit) # 绑定事件处理 # 添加到帮助下面 self.menu_help = menu1.Append(-1, u"更新版本") self.Bind(wx.EVT_MENU, self.OnHelp, self.menu_help) # 绑定事件处理 self.m_menubar1.Append(menu, u'文件(F)') self.m_menubar1.Append(menu1, u'帮助(H)') self.SetMenuBar(self.m_menubar1) self.m_mgr.Update() self.Centre(wx.BOTH) # Connect Events self.m_openBtn.Bind(wx.EVT_BUTTON, self.OPEN) self.m_startbtn.Bind(wx.EVT_BUTTON, self.START) self.m_stopBtn.Bind(wx.EVT_BUTTON, self.STOP) # 版本说明 def OnHelp(self, event): dialog = wx.MessageDialog(None, u"当前版本是V1.0", u'版本更新', wx.YES_NO | wx.ICON_QUESTION) retCode = dialog.ShowModal() if (retCode == wx.ID_YES): print 'yes' else: print 'no' dialog.Destroy() def OnWindowClose(self, event): print 'closewindows' self.Destroy() # 更新按键 def updatabtn(self): self.m_startbtn.Enable() self.m_stopBtn.Disable() # 停止 def STOP(self, event): self.StopThread() self.uptext() self.m_startbtn.Enable() self.m_stopBtn.Disable() def uptext(self): print("STOP") self.result_text.AppendText("\nSTOP") # 停止线程 def StopThread(self): while self.threads: thread = self.threads[0] thread.stop() self.threads.remove(thread) # 更新文本显示 def LogMsg(self, msg): self.result_text.AppendText(msg) # menu菜单 def OnSelect(self, event): print("onSelect") # self.path_text.SetValue(" ") # # 文本显示数据 # self.result_text.SetValue(" ") pass def OnMenuClear(self, event): print "onCLEAR" self.path_text.SetValue(" ") # 文本显示数据 self.result_text.SetValue(" ") # 开始 def START(self, event): count = self.count_text.GetValue() print ('执行次数-->%s') % count if self.path_text.GetValue() == '': print "记得选择执行的文件哦!" else: print ('path-->%s') % paths # 线程名称, 执行的python文件,执行的次数 thread1 = myThread('python thread', pathname, int(count), self) self.threads.append(thread1) thread1.start() self.m_startbtn.Disable() self.m_stopBtn.Enable() def UpdataCtrl(self): self.result_text.appendText("Worker Threads %s" % (self.threads)) # 打开对话框 def OPEN(self, event): """ Create and show the Open FileDialog """ global paths, pathname dlg = wx.FileDialog( self, message="Choose a file", defaultFile="", wildcard=wildcard1, style=wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR ) if dlg.ShowModal() == wx.ID_OK: tmp = "" # paths = dlg.GetPaths() paths = dlg.GetPaths() # print "You chose the following file(s):" for path in paths: tmp = tmp + path # print "tmp路径 %s" %tmp # set the value of TextCtrl[filename] self.path_text.SetValue(tmp) print (u'textpath---- open-->'), tmp # 得到文件的名称 pathname = tmp.split('\\')[-1] # set the value to the TextCtrl[contents] # file = open(self.m_textCtrl2.GetValue()) # self.m_textCtrl19.SetValue(file.read()) # file.close() dlg.Destroy() # Run the program if __name__ == "__main__": app = wx.App() frame = MyForm() frame.Show() app.MainLoop()
转载请注明原文地址: https://www.6miu.com/read-24220.html

最新回复(0)