Я создал небольшую программу, чтобы получить введенный пользователем текст и сохранить текст в HTML-файл. Вот мой пример маленькой программы.
from tkinter import *
from jinja2 import Template
root=Tk()
textBox=Text(root, height=2, width=10)
textBox.pack()
buttonSave=Button(root, height=1, width=10, text="Save",
command=lambda: createCaseDetails())
buttonSave.pack()
def createCaseDetails():
# Create The template html for case report
t = Template("""
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>Case Report</title>
</head>
<body>
<h1><span class="blue"><</span>Evidence<span class="blue">></span> <span class="yellow">System Information</pan></h1>
<h2>Created with love by bluebear119 </h2>
<h3>Case Description</h3>
<p>{{Case_Description}</p>
</body>
</html>
""")
f = open('Case Report.html', 'w')
inputvalue = textBox.get("1.0", "end-1c")
print(inputvalue)
message = t.render(Case_Description=inputvalue)
f.write(message)
f.close()
print("Case Report.html file saved.")
mainloop()
Но когда я реализую это в своем огромном коде, я не могу использовать переменную, поскольку она принадлежит к тому же классу, но из переменной другой функции.
Я определил функцию createCaseDetails () на верхнем уровне, но мое текстовое поле находится в другой функции, кнопка также находится в другой функции. Как я могу нажать кнопку и сохранить текст описания дела в html.
Текстовое поле и кнопка будут определяться в одном классе следующим образом:
Class CreateCaseInterface(Frame):
def caseInformation(self):
...
Case_Description_text=Text(self.caseInfoFrame,width=30,height=11,yscrollcommand=CaseDescripyscrollbar.set)
Case_Description_text.grid(row =4, column =1,pady=5)
def UACaseManagement(self):
Executebtn = Button(self.UACaseManagementFrame, text="Execute for create and save the case file", command=createCaseDetails(self),width=30,height=5)
Executebtn.grid(row=12,column= 4,sticky=W,pady=5,columnspan=2)
def createCaseDetails(self):
...
# As I already know declare global is not the solution
inputvalue = Case_Description_text.get("1.0", "end-1c")
print(inputvalue)
message = t.render(Case_Description_text=inputvalue)
Ошибка не может быть использована переменная Case_Description_text
в функции createCaseDetails()
.
Полный код для огромного файла Ссылка: https://drive.google.com/open?id=1I8TPSPf8XmtaeJ3Vm9Pk0hM1rOgqIcaRMgVUNxyn8ok