我正在创建一个小应用程序,我可以插入我的安卓手机的IP地址,然后按一个按钮。我是通过ADB无线连接的。这很有效,现在我想在一个可滚动的、不可编辑的文本字段中显示
adb logcat
的日志。但是在这里我遇到了一个问题,我试图像这样捕捉logcat命令的输出
p = os.popen("adb logcat")
,然后像这样打印它
print(p.read())
。这只会让我的应用程序(tkinter)冻结,我猜这与打印永不结束的事实有关。有没有人知道如何显示logcat的结果。
Code of function
def logcatcommand():
p = os.popen("adb logcat")
print(p.read())
Button:
button2 = tk.Button(text="Open logcat",width=25, height=3, command=logcatcommand)
button2.grid(row=5, column=0)
你们是否也有办法让我实时显示这些信息?我想我必须使用这样的代码。
result = scrolledtext.ScrolledText(window, wrap = tk.WORD, width = 40, height = 10, font = ("Times New Roman", 15))
result.grid(column = 1, row=0)
result.insert(tk.INSERT, output)
result.configure(state ='disabled')
其中输出为从终端检索的实时数据。
示例行logcat。
09-10 14:10:28.479 971 3009 I WifiHAL : event received NL80211_CMD_VENDOR, vendor_id = 0x1374, subcmd = 0xd
09-10 14:10:34.779 1526 4567 I BatteryStatsService: In wakeup_callback: resumed from suspend
09-10 14:10:35.321 1526 4567 I BatteryStatsService: In wakeup_callback: suspend aborted
感谢Javier Gonzalez,我能够使用logcat打印。
def logcatcommand():
popen = subprocess.Popen(args="adb logcat", shell=True, stdout=subprocess.PIPE)
return iter(popen.stdout.readline, b"")
def logcatresult():
for line in logcatcommand():
print(line)
但是,当我试图将数值设置到一个变量中,或者只是一般地做其他事情(比如试图按下另一个按钮)时,我唯一看到的是Mac OSX的彩虹旋转轮。