我使用的Tkinter与Python来创建该Excel文件转换成CSV的程序的用户界面。

我创建的标签以作为状态栏,并设置statusBarText作为STRINGVAR()作为textvariable。 inputFileEntry和outputFileEntry是包含输入和输出文件路径textvariables。

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!')

这个函数会得到当你点击转换按钮,一切例外的是状态栏不会改变说“转换......”工作正常调用。

在状态栏文本将得到改变为无效参数如果任一输入或输出是空的,并且它会改变到成功或失败取决于返回代码。问题是,它从不改变为“转换......”

我复制和粘贴,准确的行成,如果语句,它工作正常,但由于某些原因,它的子进程运行之前从来没有发生变化时,其在函数的顶部。任何帮助,将不胜感激。

有帮助吗?

解决方案

由于你正在做的这一切在一个单一的方法调用,在GUI从来没有得到一个机会,你开始你的子过程之前更新。退房update_idletasks()调用...

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

<强> w.update_idletasks() 在更新显示一些任务,如缩放和重绘窗口小部件,被称为空闲任务,因为它们通常推迟到应用程序完成处理事件和已经回到主循环等待新的事件。结果     如果要强制显示应用程序下空转之前更新,调用任何插件的w.update_idletasks()方法。

其他提示

你是如何创建标签? 我有这个小测试设置:

from Tkinter import *
class LabelTest:

    def __init__(self, master):
        self.test = StringVar()

        self.button = Button(master, text="Change Label", command=self.change)
        self.button.grid(row=0, column=0, sticky=W)

        self.test.set("spam")
        self.testlabel = Label(master, textvariable = self.test).grid(row = 0,column = 1)
    def change(self):

        self.test.set("eggs")



root = Tk()
root.title("Label tester")
calc = LabelTest(root)

root.mainloop()

和它的工作原理。 你一定要使用 “textvariable = StatusBarText”,而不是 “文本= StatusBarText.get()”?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top