我有一个tkinter的应用程序,显示一些信息在一个文本小部件框。它从API收集数据,然后显示输出。如果我收集一点信息,它就能正常工作。但我试图显示多行信息。在python中使用以下代码可以很好地工作:
import sys
import requests
import urllib3
from requests.auth import HTTPBasicAuth
import json
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
#NetMRI Info
username = "test"
password = 'test'
DEVICE ='test_device'
url = 'https://test/api/3.7/infra_devices/search?DeviceName=' + DEVICE
#response Data
response = requests.get(url, auth=HTTPBasicAuth(username, password), verify=False)
data = response.json()
for ID in data['infra_devices']:
print("Device ID= " + ID['DeviceID'], "DeviceModel= " + ID['DeviceModel'],sep='\n')
输出显示在控制台中,如:
设备ID= 324770
设备型号= ASR 1001 X
进程结束,退出代码为0
然后我有了tkinter应用程序的代码:
def button_get_info():
d = device.get()
url = 'https://test/api/3.7/infra_devices/search?DeviceName=' + d
response = requests.get(url, auth=HTTPBasicAuth(username, password), verify=False)
data = response.json()
for ID in data['infra_devices']:
print_out.insert("end-1c", "Device ID= " + ID['DeviceID'], "DeviceModel= " + ID['DeviceModel'])
但它只显示:
设备ID= 324770
它不显示其他行/输出。
先谢谢你了
1条答案
按热度按时间f0ofjuux1#
insert
方法接受一个索引、一个要打印的字符串、一个可选的标签,以及其他可选的字符串、标签组合(例如:insert(index, string, tag, string, tag, ...
)当你执行
print_out.insert("end-1c", "Device ID= " + ID['DeviceID'], "DeviceModel= " + ID['DeviceModel'])
时,你传递了一个索引,然后又传递了两个参数。要打印的字符串是"Device ID= " + ID['DeviceID']
,下一个参数被视为标记,因此它不会显示为文本。一个简单的解决方案是在调用
insert
之前连接这两个字符串。为了使您的代码更容易测试,我建议创建字符串并将字符串作为单独的代码行插入,并使用f字符串而不是串联。