PyQt5 - 如何将 Windows 命令结果插入 qlabel [重复]

Posted

技术标签:

【中文标题】PyQt5 - 如何将 Windows 命令结果插入 qlabel [重复]【英文标题】:PyQt5 - How to insert windows command result into qlabel [duplicate] 【发布时间】:2021-03-25 10:09:53 【问题描述】:

我是第一次学习PyQt5,我对qlabel感到困惑 windows 10 cmd "wmic cpu get name" 将返回当前 CPU 名称。 (例如:名称 Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz) 我想把这个结果放入 qlabel。 哪些公共功能或插槽适合此结果? 谢谢

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

import xxxx_UI as ui
import subprocess,os,sys

class Main(QMainWindow, ui.Ui_MainWindow):
    def __init__(self):
         super().__init__()
         self.setupUi(self)
         self.Exit_BTN.clicked.connect(self.buttonClicked)
         Processor_content=os.system("wmic cpu get name")
         self.processor_content.settext(self.processor_content)
    def buttonClicked(self):
        window.destroy()

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = Main()
    window.show()
    sys.exit(app.exec_())

【问题讨论】:

应该是self.processor_content.setText(Processor_content) 这能回答你的问题吗? Running shell command and capturing the output 不要使用 os.system() 因为它不返回结果,在副本中它指示如何在 python 中获取命令的输出 【参考方案1】:

os.system() 不会返回实际输出,它会将其发送到解释器的控制台。

>>Processor_content=os.system("wmic cpu get name")

如果你想把输出变成一个变量,你应该使用subprocess.check_output() 您可以执行以下操作:

>>Processor_content = subprocess.check_output("wmic cpu get name")

但它会为您提供字节字符串,您可以在以下输出中看到:

>>Processor_content
b'Name                                      \r\r\nIntel(R) Core(TM) i5-6200U CPU @ 2.30GHz  \r\r\n\r\r\n'

因为它是一个字节串,你可能想解码它:

>>Processor_content.decode('ascii')
'Name                                      \r\r\nIntel(R) Core(TM) i5-6200U CPU @ 2.30GHz  \r\r\n\r\r\n'

如果你愿意,可以稍微处理一下这个字符串,让它看起来更好,像这样:

>>Processor_content = Processor_content.decode('ascii').replace('Name', '').strip()
>>Processor_content
'Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz'

现在终于可以使用这个字符串显示在Qt

 self.processor_content.setText(Processor_content)

【讨论】:

我不认为问题是如何从命令结果中提取cpu名称 是的,但他试图用os.system() 给出的任何输出设置标签,但os.system() 会将输出传递给解释器的控制台,而不是变量。在你拥有你想要展示的价值之前,你怎么能继续前进? 你是对的,但如果是这种情况,我建议你也编辑问题以匹配答案 我觉得没必要,看一遍帖子,windows 10 cmd "wmic cpu get name" 会返回当前CPU名称。 (例如:名称 Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz)我想将此结果放入 qlabel 没错。通过阅读帖子,我了解到问题是关于 QLabel,而不是处理器名称

以上是关于PyQt5 - 如何将 Windows 命令结果插入 qlabel [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用Windows批处理将长字符串复制到剪贴板时,会出现“命令的语法不正确”错误

在Windows系统中安装PyQt5

PYQT5中如何将按钮点击连接的结果输出到界面上

如何在 windows python 上安装 Pyqt5

如何在 PyQt5 中正确异步加载图像?

在 windows 上安装 PyQt5 Designer