我有一个 python2.7 程序,可以将文本报告转换为 Excel 电子表格。
它通过将文件拖放到桌面图标中来运行。
程序运行时会打开一个 Windows CMD 窗口。
程序完成后,我会显示一个 Windows 消息框:
windll.user32.MessageBoxA(None,"Finished","gen2xls",0)
消息框出现在屏幕上,但立即移动到 CMD 窗口后面,因此您看不到它。
一旦消息框出现在屏幕上,似乎焦点就会更改为 CMD 窗口。
有没有办法让焦点保持在消息框上,直到它被点击?
如果您查看下面的代码,则可以测试该文件是否为两种类型之一。如果文件不是这两种类型之一,则有一个打印语句“打印'文件似乎不是一个 gencount”',然后是一个 continue 语句。如果触发此操作,则“完成”框会出现在 CMD 屏幕前,但当作业运行完成时,一旦出现消息框,焦点就会更改为 CMD 窗口。
代码的主要部分如下:
def runexcel(args):
sheets = []
"""Convert LSC gencount to Excel file
"""
sawerror = False
print "Running gen2xls"
if len(args) == 1:
windll.user32.MessageBoxA(None,"Error: Please drag at least one file","gen2xls",0)
sys.exit(1)
try:
for fname in args[1:]:
file = open(fname,"r")
get_type = get_gen_type(file)
if get_type == -1:
print 'file does not appear to be a gencount'
continue #skip file if not a gencount (only tests for presence of pagefeed char)
if get_type[0] == 'laur':
sheets = get_l_sheets(file) #LAURA'S FORMAT:
else:
if get_type[0] == 'serg':
sheets = get_s_sheets(file,get_type[1],get_type[2]) #SERGEI'S FORMAT:
make_sheets(sheets,fname)
print "Finished Processing %s" % fname
windll.user32.MessageBoxA(None,"Finished","gen2xls",0)
except:
traceback.print_exc()
print "Errors occurred, please check the above messages"
windll.user32.MessageBoxA(None,"Error: Problems occurred, please check them and try again","gen2xls",0)
##########################################################################################
##########################################################################################
if __name__ == "__main__":
runexcel(sys.argv)