我有一个更大的应用程序调用了许多可能需要很长时间的进程。所以我想我会发布一个子对话框,表明已经完成了多少步骤。在主模块中,我有:
sdroot = Toplevel()
sdroot.geometry('+240+200')
self.sd = StatusDialog( sdroot, "Completed %d Mutation(s)" )
sdroot.focus_set()
sdroot.lift()
sdroot.wait_visibility()
sdroot.grab_set()
self.matrix.mutate( self.myzmm, self.mycomplex.pdb, self.sd )
sdroot.destroy()
应该显示我的状态对话框。 mutate函数然后用代码 -
更新该对话框def mutate( self, z, pdbfile, sd = '' ):
...
cnt += 1
if sd:
sd.update( cnt )
状态对话框的代码是:
class StatusDialog:
def __init__( self, master, fmtstr ):
self.parent = master
self.parent.title( "Calculation Status" )
self.state = StringVar()
self.fmtstr = fmtstr
self.sstr = self.fmtstr % 0
self.state.set( self.sstr )
self.frame = Frame(self.parent, relief=RIDGE, borderwidth=2 )
self.frame.pack()
self.label=Label( self.frame, textvariable = self.state )
self.label.pack( padx = 20, pady = 25 )
def update( self, cnt ):
self.sstr = self.fmtstr % cnt
self.state.set( self.sstr )
self.parent.update_idletasks()
它与python 2.4和RHEL 5完美配合。但是,在Windows XP(python 2.6)上,对话框发布了,但我只看到一个空白框。没有状态信息。
有人可以帮帮我吗?我不确定我是否做了一些根本错误的事情,Linux让我逃脱它或者我需要做一些特别的事情才能让对话框在Windows XP中显示。