weixin_42979701 2019-07-05 16:40 采纳率: 75%
浏览 2116
已采纳

python tkinter里面,怎么把函数的结果按照函数原本的样式输出到text框上面?

import tkinter as tk
import time

root=tk.Tk()
root.title("how to do ")
root.geometry('500x600')
tk.Label(root, text="显示", bg="green", font=("Arial", 12), width=5, height=1).place(x=20,y=30)

def print():
    EditText.insert('1.0',A())

def A():
    for i in range(100):
                time.sleep(1) #间隔1秒输出
        if i < 3:
            yield ("编号{},字符串A".format(i))
        if 3<i and i<5:
            yield ("编号{},字符串B".format(i))
        if i >5:
            yield ("编号{},字符串C".format(i))
            break
    return

EditText = tk.Text(root,width=30,height=10)   #创建文本框
EditText.grid(row=2,column=3)
btn_test=tk.Button(root, text="按钮", command =print,width=5, height=2)

btn_test.place( x=300,y=200)

root.mainloop()

这样子运行的结果:在text上出现:Generator Object A at 0x000002898B746CF0

如果把函数的字符串取出来:

str=A()

result=list(str)

这样子虽然可以输出,但是时间间隔没了、原格式也变了

期望输出结果是这样的:
图片说明

但是如果像图片那样输出,代码可以改成:

def A():
    for i in range(100):
        if i < 3:
            yield ("编号{},字符串A".format(i))
        if 3<i and i<5:
            yield ("编号{},字符串B".format(i))
        if i >5:
            yield ("编号{},字符串C".format(i))
            break
    return
for i in A():
        print(i)

但这样子在tkinter上insert不了

请问各位大佬,有没有什么办法解决。

  • 写回答

1条回答 默认 最新

  • 大蛇王 2019-07-05 17:48
    关注
    def print():
        EditText.insert('1.0',next((A()))+'\n')
    

    改这样就行了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 2月25日

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题