标签:python function statusbar label tkinter
我正在使用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()方法.
标签:python,function,statusbar,label,tkinter 来源: https://codeday.me/bug/20190714/1457623.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。