У меня есть приложение большего размера, которое вызывает несколько процессов, которые могут занять много времени. Поэтому я подумал, что опубликую поддиалог, в котором будет указано, сколько шагов было выполнено. В основном модуле у меня есть:
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.