1

我有一个 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)
4

0 回答 0