我有一些旧的Python脚本,它们使用的tkinter版本与当前系统所配备的版本不同。在过去,存在并使用一种名为_tkinter.createfilehandler()的方法。在当前版本中,这会返回RuntimeError异常:

Traceback (most recent call last):
  File "src/text.py", line 513, in <module>
    tkinter.createfilehandler(pipe_r, READABLE, drain_pipe)
RuntimeError: _tkinter.createfilehandler not supported for threaded Tcl


我要运行的脚本是这样的(当然是简化版):

#!/usr/bin/env python

import os
from Tkinter import *

(pipe_r, pipe_w) = os.pipe()

# ...

def drain_pipe(a, b):
    # handle data from pipe_r
    # ...

tkinter.createfilehandler(pipe_r, READABLE, drain_pipe)

tk.mainloop()


有没有简单的方法可以让它再次运行?我敢肯定有一种方法可以转换脚本(或者可以根据不同的范式重新编写脚本),但是我很乐意不必进行太多更改(也许有一个开关可以再次启用它)因为我有几个这样的脚本,并且不希望打很多补丁。

最佳答案

如果tkTk()对象,请改用tk.createfilehandler

关于python - 使_tkinter.createfilehandler再次工作(或提供解决方法),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21868406/

10-11 08:34