Python Tkinter:如何通过单击Mac上的Dock图标重新打开应用程序?
我将close按钮与root.draw()绑定,因此应用程序将关闭其窗口而不是退出,但应用程序似乎挂起,无法通过单击Dock图标重新打开 如何绑定方法root.deiconify()来执行此操作 我用pyinstaller打包应用程序 更新: 在运行root.iconify()或root.draw()之后,python tkinter应用程序似乎挂起,因此单击Dock上的图标没有响应。这是测试代码Python Tkinter:如何通过单击Mac上的Dock图标重新打开应用程序?,python,tkinter,Python,Tkinter,我将close按钮与root.draw()绑定,因此应用程序将关闭其窗口而不是退出,但应用程序似乎挂起,无法通过单击Dock图标重新打开 如何绑定方法root.deiconify()来执行此操作 我用pyinstaller打包应用程序 更新: 在运行root.iconify()或root.draw()之后,python tkinter应用程序似乎挂起,因此单击Dock上的图标没有响应。这是测试代码 from Tkinter import * from ScrolledText import Sc
from Tkinter import *
from ScrolledText import ScrolledText
import threading, time, os
def printnumber(output):
n = 1
while 1:
output.insert(END, '%s\n'%str(n))
output.see(END)
n += 1
time.sleep(1)
def runing(output):
output.insert(END, 'Start\n')
output.see(END)
threading.Thread(target=printnumber, args=(output, )).start()
root = Tk()
text_output = ScrolledText(root, undo=1, highlightthickness=0, font='system', )
text_output.pack()
Button(root, text='Start', command=runing(text_output)).pack()
root.protocol('WM_DELETE_WINDOW', lambda :root.iconify())
os.system('''/usr/bin/osascript -e 'tell app "System Events" to set frontmost of every process whose unix id is %s to true' '''%os.getpid())
root.mainloop()
如果您使用的是OS X 10.9或更高版本以及Python.org 64位/32位安装程序中的Python,则应用程序窗口可能由于Tk问题而无法正确更新。如果可能,请安装最新的ActiveTcl 8.5.18.0。(另外,从3.4.0、3.3.3和2.7.6安装程序开始,一个在交互使用时可能导致Python崩溃的关键OS X 10.9问题已经修复。)
- 这是从这个链接中获取的
有一整节讨论了Tk/IDLE的不同问题,具体取决于您使用的OS X版本。如果您使用的是OS X 10.9或更高版本以及Python.org 64位/32位安装程序中的Python,则应用程序窗口可能因Tk问题而无法正确更新。如果可能,请安装最新的ActiveTcl 8.5.18.0。(另外,从3.4.0、3.3.3和2.7.6安装程序开始,一个在交互使用时可能导致Python崩溃的关键OS X 10.9问题已经修复。)
- 这是从这个链接中获取的
有一整节讨论了Tk/IDLE的不同问题,具体取决于您使用的OS X版本。最后我从这里找到了解决方案
最后我从这里找到了解决办法
谢谢,我以后会试试的。它确实对我有用。在运行root.draw()或root.iconify()之后,我找不到任何方法通过单击Dock上的图标来响应python tkinter应用程序。通过使用root.createcommand('tk::mac::rebootapplication',root.deiconify)修复了此问题。谢谢,我稍后将尝试此方法。它确实对我有用。在运行root.draw()或root.iconify()后,我找不到任何方法通过单击Dock上的图标来响应python tkinter应用程序。通过使用root.createcommand('tk::mac::rebootApplication',root.deiconify)修复了我的错误,最小化时它处于活动状态,但仍然不知道如何绑定root.deiconify()我错了,最小化时它处于活动状态,但是仍然不知道如何绑定root.deiconify()
root.createcommand('tk::mac::ReopenApplication', root.deiconify)