Python的新手,试图弄清楚为什么当我打印出一个函数时,它以我想要显示的方式显示,但是在更新tkinter文本框的同一函数中,它与< strong> element.split
import tkinter
root = tkinter.Tk()
list1 = ["User1 : 1241234",
"User2 : 32452623",
"User2 : 32452345"]
def func1():
for element in list1:
sep_list = element.split(':') # SPLIT
print(sep_list) # PRINT looks correct
T1.insert("end", sep_list, 'recent') # same update to text field, but ugly
button1 = tkinter.Button(root, text="Click", command=func1)
button1.grid(row=0, column=1, sticky='w')
T1 = tkinter.Text(root, height=18, width=40)
T1.place(x=35, y=35)
w = 400
h = 350
ws = root.winfo_screenwidth()
hs = root.winfo_screenheight()
x = (ws/2) - (w/2)
y = (hs/2) - (h/2)
root.geometry('%dx%d+%d+%d' % (w, h, x, y))
root.mainloop()
打印内容如下所示,对我来说已经足够了。
['User1 ', ' 1241234']
['User2 ', ' 32452623']
['User2 ', ' 32452345']
文本框填充为:
{User1 } { 1241234}{User2 } { 32452623}{User2 } { 32452345}
遍历文档,tkinter页面和SO,但看不到与此相关的任何内容。我可能只是新手才能了解那里的问题。这只是使用输出(python vs. tkinter)的一种区别,那里有任何解决方法吗?
我在文本字段中放入的任何列表,都将{ } { }
单行添加到其中,似乎发生了这种情况。
我正在工作的最终结果是摆脱了{},并列出了每行的用户编号。
答案 0 :(得分:0)
DYZ指出了为什么会发生此问题,因为第二个参数需要是字符串而不是列表(我也不知道为什么还要加上花括号)。但是,通过将列表中的元素添加到字符串,然后将该字符串传递给insert函数,您应该能够以所需的格式而不是单独的行来打印信息。例如:
T1.insert('end', (list1[0] + ' ' + list1[1]) )
答案 1 :(得分:0)
DYZ提供了一些信息
T1.insert(“ end”,sep_list,'recent')尝试插入 单元素列表sep_list到T。方法insert期望 第二个参数是字符串,而不是列表。显然,卷曲 花括号是insert如何处理意外参数的想法。 传递sep_list [0]或其他一些字符串以获得最佳结果。
最终使用:
for i in list1:
T1.insert("end", (i + "\n"), 'recent')