使用列表从print和tkinter文本框中获得不同的输出

时间:2018-08-05 06:10:09

标签: python tkinter

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)的一种区别,那里有任何解决方法吗? 我在文本字段中放入的任何列表,都将{ } { }单行添加到其中,似乎发生了这种情况。

我正在工作的最终结果是摆脱了{},并列出了每行的用户编号。

2 个答案:

答案 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')