【问题标题】:tkinter output returns strings as a dicttkinter 输出将字符串作为字典返回
【发布时间】:2017-03-30 09:42:37
【问题描述】:
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
如何使输出看起来更好:
第一行
第二行

我尝试将 message 作为 list(i for i in output()),但结果是一样的。

【问题讨论】:

    标签: python tkinter window output


    【解决方案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.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 2021-08-16
      相关资源
      最近更新 更多