Gavin_Stargazer 2021-09-15 09:51 采纳率: 62.5%
浏览 172
已结题

【python】【tkinter】向scrolledtext插入信息,优化代码

目标:其他类在运行中产生的信息,依次插入文本框
说明:运行都在【class Main】完成,不要并入【class App】这个类下
现行方案:global app_text
请教问题:global理论上可能影响性能,是否有其他更优方案完成上述目标?谢谢

import time
import tkinter as tk
from tkinter import scrolledtext


# 目标:其他类在运行中产生的信息,依次插入文本框
# 说明:运行都在【class Main】完成,不要并入【class App】这个类下
# 现行方案:global app_text
# 请教问题:global理论上可能影响性能,是否有其他更优方案完成上述目标?谢谢


class App:  # 用于交互
    def __init__(self):
        self.window = tk.Tk()
        self.widget()
        self.window.mainloop()

    def widget(self):
        button = tk.Button(self.window, text="点我干饭", command=self.go)
        button.pack()

        global app_text  # 现有方案
        app_text = scrolledtext.ScrolledText(self.window)
        app_text.pack()

    def go(self):
        Main()


class Main:  # 用于运算
    def __init__(self):
        self.a1()
        self.a2()

    def a1(self):
        time.sleep(1)
        app_text.insert("insert", "干饭人老汤先吃了三碗\n")  # 插入信息
        app_text.update()

    def a2(self):
        time.sleep(1)
        app_text.insert("insert", "干饭人老汤又又又吃了第四碗\n\n")  # 插入信息
        app_text.update()


App()

  • 写回答

1条回答 默认 最新

  • IT_心如止水 2021-09-15 10:07
    关注

    这样应该可以,和你之前的代码运行效果是一样的

    
    
    class App:  # 用于交互
        def __init__(self):
            self.window = tk.Tk()
            self.widget()
            self.window.mainloop()
    
        def widget(self):
            button = tk.Button(self.window, text="点我干饭", command=self.go)
            button.pack()
            # global app_text  # 现有方案
            self.app_text = scrolledtext.ScrolledText(self.window)
            self.app_text.pack()
    
        def go(self):
            Main(self.app_text)
    
    
    class Main:  # 用于运算
        def __init__(self, app_text):
            self.a1(app_text)
            self.a2(app_text)
    
        def a1(self, app_text):
            time.sleep(1)
            app_text.insert("insert", "干饭人老汤先吃了三碗\n")  # 插入信息
            app_text.update()
    
        def a2(self, app_text):
            time.sleep(1)
            app_text.insert("insert", "干饭人老汤又又又吃了第四碗\n\n")  # 插入信息
            app_text.update()
    
    
    App()
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月23日
  • 已采纳回答 9月15日
  • 创建了问题 9月15日

悬赏问题

  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加