加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python tkinter标签在功能开始时不会改变

发布时间:2020-12-20 12:35:44 所属栏目:Python 来源:网络整理
导读:我正在使用tkinter和 Python为将Excel文件转换为CSV的程序创建用户界面. 我创建了一个标签作为状态栏,并将statusBarText设置为StringVar()作为textvariable. inputFileEntry和outputFileEntry是包含输入和输出文件路径的文本变量. def convertButtonClick():
我正在使用tkinter和 Python为将Excel文件转换为CSV的程序创建用户界面.

我创建了一个标签作为状态栏,并将statusBarText设置为StringVar()作为textvariable. inputFileEntry和outputFileEntry是包含输入和输出文件路径的文本变量.

def convertButtonClick():
    statusBarText.set('Converting...')

    if inputFileEntry.get() == '' or outputFileEntry.get() == '':
        statusBarText.set('Invalid Parameters.')
        return

    retcode = subprocess.('Program.exe',shell=true)

    if retcode == 0:
        statusBarText.set('Conversion Successful!')
    else:
        statusBarText.set('Conversion Failed!')

单击转换按钮时会调用此函数,一切正常,但状态栏永远不会更改为“转换…”.

如果输入或输出为空,状态栏文本将更改为无效参数,并且将根据返回代码更改为成功或失败.问题是它永远不会改变为’转换……’

我已经将那条确切的行复制并粘贴到if语句中,并且它工作正常,但由于某种原因,它只是在子进程运行之前永远不会更改它位于函数顶部.任何帮助将不胜感激.

解决方法

由于您在单个方法调用中执行所有这些操作,因此在启动子进程之前,GUI永远不会有机会更新.查看update_idletasks()调用…

从http://infohost.nmt.edu/tcc/help/pubs/tkinter/universal.html

w.update_idletasks()更新显示的某些任务(例如调整大小和重绘小部件)称为空闲任务,因为它们通常会延迟到应用程序完成处理事件并返回主循环以等待新事件.????如果要在应用程序下次空闲之前强制更新显示,请在任何窗口小部件上调用w.update_idletasks()方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读