4

我正在尝试显示调试控制台窗口(需要与脚本共享数据),但主控制台仍处于打开状态。我知道如何做到这一点的唯一方法是执行第二个脚本,并与文件共享数据..

我希望第二个窗口是一个实际的控制台。

我在 Windows 7 上,我的脚本不需要非常兼容。

4

2 回答 2

1

如果您在 Windows 上,您可以使用 win32console 模块为您的子线程打开第二个控制台(因为您希望它们共享相同的数据)输出。如果您在 Windows 上,这是最简单和最简单的方法。

这是一个示例代码:

import win32console
import threading
from time import sleep

def child_thread():
    win32console.FreeConsole() #Frees child_thread from using main console
    win32console.AllocConsole() #Creates new console and all input and output of the child_thread goes to this new console
   
    while True:
        print("This is in child_thread console and the count is:",count)
        #prints in new console dedicated to this thread

if __name__ == "__main__": 
    count = 0
    threading.Thread(target=child_thread, args=[]).start()
    while True:
        count+=1
        print("Hello from the main console - this is count:", count)
        #prints in main console
        sleep(1)
        #and whatever else you want to do in ur main process

还有一种使用队列模块中的队列的更好方法,因为它可以让您更好地控制竞争条件。

这是win32console 模块文档

于 2021-03-31T10:10:14.233 回答
0

您可以考虑在您的应用程序上使用 GUI 并弹出到将输入和输出(文本框)设计为控制台的窗口。从技术上讲,两个窗口将作为一个应用程序运行,因此可以访问相同的命名空间。要在 GUI 中包装 python,请查看 python WxPython TkInter。祝你好运。

PS而且它会非常兼容:)

于 2013-05-25T21:52:35.000 回答