Проблемы с отображением обновлений диалога tkinter в Windows - PullRequest
1 голос
/ 21 мая 2011

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

  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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...