相关疑难解决方法(0)

Python子流程,具有实时输入和多个控制台

主要问题

简而言之:我想为我的程序安装两个控制台.一个用于活动用户输入.另一个用于纯日志输出. (工作代码包括已接受的答案在下面的问题文本中,在"编辑-3"部分下面.在"编辑-1"部分和"编辑-2"部分是功能解决方法.)

为此,我有一个主命令行Python脚本,它应该只为日志输出打开一个额外的控制台.为此,我打算将日志输出重定向到第二个控制台的stdin,该日志输出将打印在主脚本的控制台上,我将其作为子进程启动.(我使用subprocess,因为我没有找到任何其他方法来打开第二个控制台.)

问题是,似乎我能够发送到第二个控制台的stdin - 但是,在第二个控制台上没有任何内容被打印出来.

以下是我用于实验的代码(在Windows 10下的PyDev上使用Python 3.4).该函数writing(input, pipe, process)包含将生成的字符串复制到pipevia子进程打开的控制台的as 传递的stdin的部分.函数writing(...)通过类运行writetest(Thread).(我留下了一些代码,我注释掉了.)

import os
import sys
import io
import time
import threading
from cmd import Cmd
from queue import Queue
from subprocess import Popen, PIPE, CREATE_NEW_CONSOLE


REPETITIONS = 3


# Position of "The class" (Edit-2)


# Position of "The class" (Edit-1)


class generatetest(threading.Thread):

    def __init__(self, queue):
        self.output = queue
        threading.Thread.__init__(self)

    def run(self):
        print('run generatetest')
        generating(REPETITIONS, self.output)
        print('generatetest done')

    def getout(self):
        return self.output


class …
Run Code Online (Sandbox Code Playgroud)

python console subprocess input real-time

20
推荐指数
1
解决办法
1399
查看次数

Python 以编程方式更改控制台字体大小

我发现下面的代码应该以编程方式更改控制台字体大小。我在 Windows 10 上。

但是,无论我调整什么值,我似乎都无法控制字体大小,而且由于某种原因,运行此脚本时打开的控制台非常宽。

我不知道 ctypes 是如何工作的 - 我想要的只是从 Python 内部修改控制台字体的大小。

任何实际的工作解决方案?

import ctypes

LF_FACESIZE = 32
STD_OUTPUT_HANDLE = -11

class COORD(ctypes.Structure):
    _fields_ = [("X", ctypes.c_short), ("Y", ctypes.c_short)]

class CONSOLE_FONT_INFOEX(ctypes.Structure):
    _fields_ = [("cbSize", ctypes.c_ulong),
                ("nFont", ctypes.c_ulong),
                ("dwFontSize", COORD),
                ("FontFamily", ctypes.c_uint),
                ("FontWeight", ctypes.c_uint),
                ("FaceName", ctypes.c_wchar * LF_FACESIZE)]

font = CONSOLE_FONT_INFOEX()
font.cbSize = ctypes.sizeof(CONSOLE_FONT_INFOEX)
font.nFont = 12
font.dwFontSize.X = 11
font.dwFontSize.Y = 18
font.FontFamily = 54
font.FontWeight = 400
font.FaceName = "Lucida Console"

handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
ctypes.windll.kernel32.SetCurrentConsoleFontEx(
        handle, ctypes.c_long(False), ctypes.pointer(font))


print("Foo")
Run Code Online (Sandbox Code Playgroud)

python fonts ctypes cmd

4
推荐指数
1
解决办法
1万
查看次数

使用 CMD 终端时 Python 无法显示希伯来语

我正在尝试在我的代码中使用希伯来字符。但我的终端 (CMD) 不支持希伯来语,它只显示随机问号。例如:

>>>Print("?????")
Run Code Online (Sandbox Code Playgroud)

结果:?????\

编辑:CMD 控制台的默认字体中没有希伯来字母。您可以简单地更改字体以显示希伯来语。

python cmd character-encoding hebrew python-3.x

2
推荐指数
1
解决办法
810
查看次数