سؤال

أبلغ 99 ٪ هذا غير ممكن لأن Python يتم تجميع البايت الأول ثم يفتح Windows TK ، لكنني أتساءل عما إذا كان هناك أي ظرف لإضافة زر لتحديث تطبيق TK الخاص بك في مكانه بعد حفظ التطبيق في الواقع مكتوب في؟

يمكنك أن تتخيل بعد تحديث الحشوة أو بعض السمات البسيطة ، سيكون من الرائع جدًا الضغط على الزر لتحديث الإطار بدلاً من الإغلاق وبدء مثيل جديد.

شيئا ما...

class myapp()
 def __init___(self,root):
   self.root = root
   main_menu = ttk.Frame(self.root)
   ttk.Button(main_menu,text="Refresh",command=lambda root=self.root:refresh_me(root)))
 def refresh_me(self,root):
     #refresh the window I'm in somehow...
root = Tkinter.Tk()
myapp = myapp(root)
root.mainloop()
هل كانت مفيدة؟

المحلول

واو لقد اكتشفت ذلك. لقد صنعت اثنين من التيار الكهربائي. واحد للاستيراد والآخر لتحديث.

ها أنت ذا:

#name of file is python_script.py

class myapp()
 def __init___(self,root):
   self.root = root
   main_menu = ttk.Frame(self.root)
   ttk.Button(main_menu,text="REFRESH",command=lambda self=self:self._update())

 def _update(self):
   import python_script
   python_script.main_refresh(self.root,python_script)

def main_refresh(root,python_script):
   reload(python_script)
   root.destroy()
   python_script.main()

def main():
   root = Tkinter.Tk()
   myapp = myapp(root)
   root.mainloop()

if __name__ == '__main__':
   main() 

نصائح أخرى

هذا لا يجيب بالضبط على السؤال ولكنه يوفر طريقًا إلى هدفك المعلن

أول easy_install q

ومن بعد

class myapp()
 def __init___(self,root):
   self.root = root
   main_menu = ttk.Frame(self.root)
   ttk.Button(main_menu,text="Refresh",command=lambda root=self.root:refresh_me(root)))
 def shell_me(self,root):
     #refresh the window I'm in somehow...
     import q
     q.d()

عند هذه النقطة تفتح قذيفة ويمكنك فعل شيء مثل

>>> myapp.padding = "10px" #or whatever you are trying to modify
>>> exit()

سيستأنف تطبيقك بعد ذلك مع المعلمات المحدثة.

هناك خيارات أخرى مثل PyCrust التي تفتح قذيفة تفاعلية قد لا تمنع الحلقة الرئيسية وربما تتضمن بعض الوظائف الإضافية ... ولكن q.d() هو في تجربتي أسهل واحدة لإلقاء فقط

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top