Python更新其他模块中的ScrolledText
我的代码被拆分为2个模块。一个是sub(图形用户界面)模块,另一个是main(主功能模块) 子模块(GUI) 主模块(主功能) 这是我的代码(简单版) 我的问题是ScrolledText没有在“main”函数中更新。 完成每个步骤后,在“main”模块中调用函数“setScrollTxt”。但是ScrolledText没有更改。 只有在完成“main”模块并执行“root.mainloop”之后,才会更新ScrolledTextPython更新其他模块中的ScrolledText,python,tkinter,Python,Tkinter,我的代码被拆分为2个模块。一个是sub(图形用户界面)模块,另一个是main(主功能模块) 子模块(GUI) 主模块(主功能) 这是我的代码(简单版) 我的问题是ScrolledText没有在“main”函数中更新。 完成每个步骤后,在“main”模块中调用函数“setScrollTxt”。但是ScrolledText没有更改。 只有在完成“main”模块并执行“root.mainloop”之后,才会更新ScrolledText 如何解决这个问题?首先,我建议对变量和函数名使用snake\u c
如何解决这个问题?首先,我建议对变量和函数名使用
snake\u case
(CapitalCase
用于类)。也可以显示主模块的代码吗?我添加了主模块。本模块从excel中读取数据,处理数据,写入c/h文件。这需要很长时间。我实际上有一个类似的问题,我的答案是,据我所知,一般来说,导入用于导入函数,而不是运行函数本身。我的意思是,例如,主进程可以由多个文件处理,但它都是由一个文件运行所有的函数,然而,一个子文件可能使用另一个子文件的导入来定义函数,然后由主文件运行,因此,在最后,一个函数从未在主文件中调用,但在主文件中调用的函数包含它。因此,基本上,我建议您将所需内容从一个文件(子文件)导入另一个文件(主文件),因为这通常是顺序,而不是必须遵循顺序,然后在一个文件中运行这些函数
import main
import tkinter as tk
from tkinter import filedialog
from tkinter import scrolledtext
class GUI():
def __init__(self, master):
# create Window and widgets ...
self.bt_gen = tk.Button(master, text="Generation", command=lambda: self.runGenCode())
self.bt_gen.grid(row=3, column=1, padx=5, pady=5, sticky='nsew') # button : generation
def setScrollTxt(self, text):
self.txt_status.insert(tk.INSERT, text)
self.txt_status.see(tk.END)
def clearScrollTxt(self):
self.txt_status.delete('1.0', tk.END)
def runGenCode(self):
main(self, self.dir_input, self.dir_output)
self.setScrollTxt("\nCode Generated Successfully!!!\n")
root = tk.Tk() # create window
app = GUI(root) # create object
root.mainloop()
def main(self, input, output):
# function : import data from excel
self.setScrollTxt("1/4. Import Data : Done!\n")
# function : pre-process data
self.setScrollTxt("2/4. Data Pre-Process : Done!\n")
with open(filename_output + ".h", "w") as fo:
# function : write file
self.setScrollTxt("3/4. Export Data to .h file : Done!\n")
with open(filename_output + ".c", "w") as fo:
# function : write file
self.setScrollTxt("4/4. Export Data to .c file : Done!\n")
if __name__ == "__main__":
main()