from tkinter import *
from tkinter.messagebox import showinfo
def output():
yield 'The %s line' % ('first')
yield '\n'
yield 'The %s line' % ('second')
def reply():
showinfo(title='Log size', message=(list(output())))
window = Tk()
button = Button(window, text='Get info', command=reply)
button.pack()
window.mainloop()
返回this。
如何使输出看起来更好:
第一行
第二行
我试图将消息作为列表(i为输出()中的i),但结果是相同的。
答案 0 :(得分:1)
你不需要清单!只需join
生成器的内容为字符串:
def reply():
showinfo(title='Log size', message=''.join(output()))
根本没有任何说法,让花括号不要打扰你。尝试打印列表:
>>> list(output())
['The first line', '\n', 'The second line']
因此,如果您真的喜欢列表,可以join
返回列表:
def reply():
showinfo(title='Log size', message=(''.join(list(output()))))
另一个注意事项,正如您所看到的那样,您可以将生成器视为列表,但它并非完全正确,请尝试以下方法:
def reply():
gen = output()
showinfo(title='Log size', message=''.join(gen))
showinfo(title='Log size', message=''.join(gen))
正如您所看到的,它是某种临时列表,可让您一次取下一件物品,或者只取出一件物品。所以如果你想保留信息 - 列表是个好主意!
更多here。