【发布时间】:2014-08-11 03:41:32
【问题描述】:
我在一个名为code.py 的文件中有以下代码。我正在使用IDLE 来编辑文件。当我单击Run>Run Module 时,我收到错误消息:
"IDLE 的子进程没有建立连接。要么 IDLE 无法启动 个人防火墙软件的子进程阻塞了连接。”
我使用的是 64 位 Windows 7 Ultimate,但我安装了 32 位版本的 Python 2.7。
我已经在这个网站以及其他网站上寻找解决方案,但他们似乎都建议删除名为 tkinter.py 的东西(我不知道这是什么)或关闭我的防火墙(我没有启用任何东西来自Microsoft Security Essentials,它不是防火墙。)
#Globals
#-------------------
x_pad = 476
y_pad = 444
import ImageGrab
import os
import time
import win32api, win32con
def screenGrab():
box = (x_pad+1,y_pad+1,x_pad+641,y_pad+480)
im = ImageGrab.grab(box)
im.save(os.getcwd() + '\\full_snap__' + str(int(time.time())) +
'.png', 'PNG')
def main():
pass
if __name__ == '__main__':
main()
def leftClick():
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
time.sleep(.1)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)
print 'Click.' #completely optional. But nice for debugging purposes.
def leftDown():
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
time.sleep(.1)
print 'left Down'
def leftUp():
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)
time.sleep(.1)
print 'left release'
def mousePos(cord):
win32api.SetCursorPos((x_pad + cord[0], y_pad + cord[1])
def get_cords():
x,y = win32api.GetCursorPos()
x = x - x_pad
y = y - y_pad
print x,y
【问题讨论】:
-
IDLE 曾经工作过(与其他 python 文件一起使用)还是你第一次使用它(在那台计算机上)?
-
只有当我尝试点击运行 > 运行模块时才会出现此错误,如果我双击 python 文件,代码会按预期运行。
-
问题是关于 IDLE。您是否通过 IDLE Run/Run 模块运行了其他 python 模块?如果没有,您可以尝试卸载并重新安装完整的 Python,因为 IDLE 是核心 Python 发行版的一部分。
-
不要删除 tkinter.py,因为这将禁用 Idle 和所有其他 tkinter 应用程序。你是如何开始空闲的?如果您从“开始”菜单图标启动它会发生什么?
-
@Musixauce3000 默认情况下,IDLE 在单独的进程中执行用户代码。目前,这两个进程通过套接字进行通信。由于套接字主要用于与 其他 机器(世界上任何地方)上的进程通信,因此某些机器会监视套接字的使用情况,它们有时不会区分机器内和机器间。如果你有防火墙,你可以配置不阻止内部通信。或者在命令行上使用
-n选项启动 IDLE 以在一个进程中运行 IDLE 和用户代码。除了编写 tkinter 程序之外,这大部分都有效。
标签: python python-2.7 python-idle