【发布时间】:2015-06-06 00:29:27
【问题描述】:
我正在尝试在 tkinter 中创建一个 GUI。 Gui 基本上适用于Mcp23017。我正在尝试配置输入和输出引脚,以便用户可以根据自己的选择更改它们。还有一个选项可以使输入/输出高或低..
现在我正在尝试使用“i2cget”(使用单独的函数)读取引脚。我需要将此子进程调用的输出显示到 gui 上的标签中。
这是我的代码的样子:
def read_p22():
output = subprocess.call(['i2cget -y 0x20 0x12 0xFD'],shell=True)
x=print (output)
Label(tableframe,textvariable=x).grid(row=2,column=20)
root.after(5000, read_p22)
当这个函数执行时(通过按下按钮),但是当我按下按钮时,它会在 python shell 上交替打印一个值'1'......我不知道如何将输出重定向到标签.. 有人可以有什么建议吗?
更新::在执行建议的命令时:
process = subprocess.Popen(['i2cget -y 0x20 0x12 0xFD'], stdout=PIPE, stderr=PIPE, shell=True)
output, code = process.communicate()
我打印了“输出”和“过程”,他们分别给了我以下内容:
b'' <subprocess.Popen object at 0x00000000035CB2B0>
由于没有任何东西连接到该引脚,我希望它返回一个值“0”。我不知道它给我的 b'' 是什么......
任何建议都非常感谢..
亲切的问候, 纳米塔。
【问题讨论】:
-
返回的 b'' 是 pythons 显示一个空字节字符串,因为它没有特定的编码
-
@James Kent:感谢您为我澄清这一点..:) 但它不应该给我一个“0”吗?还是只有在我实际连接某些东西时才会给出 0?而且这个(b'')仍然出现在shell而不是GUI中。有没有办法可以把它放在 GUI 上?
-
如果您不知道
b''是什么,那么您应该先学习一些Python,然后再尝试结合tkinter和subprocess。如果您已经了解其他编程语言,那么read the official Python tutorial 否则start with Python for Non-Programmers
标签: python tkinter subprocess