Мой код не слишком длинный, поэтому вот вся программа, когда я запускаю ее, она говорит:
NameError: имя 'xmlp' не определено для строки 88
Это кажется слишком простым, что здесь происходит? Он работал прямо перед тем, как я взял извлечение, скопировал его и переименовал в xmlp
, затем я сделал новую кнопку для его выполнения, но затем он сломался, почему он говорит, что он не определен, когда это очень четко?
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
import tkinter as tk
import xml.etree.ElementTree as ET
interface = tk.Tk()
interface.geometry("900x500")
interface.title("Text display")
T = tk.Text(interface, height=20, width=150)
T.grid(column=1, row=2, columnspan=3)
def openfile(): # open your file and load it into the text widget
global filename
filename = filedialog.askopenfilename()
print(filename)
file = open(filename)
global txt
txt = file.read()
T.delete('1.0', END)
T.insert(tk.END, txt)
return txt
def extract(): # take the opened file and write it to a text file
open('somefile.txt', 'w').close()
root = ET.fromstring(txt)
str_params = root.findall('.//parameter/[parameterid="str"]')
for param in str_params:
if param.find('./name').text == 'Text':
print(format(param.find('./value').text))
with open('somefile.txt', 'a') as the_file:
the_file.write(format(param.find('./value').text))
the_file.write("\n")
exportFileDir = open('somefile.txt',)
txtExport = exportFileDir.read()
T.delete('1.0', END)
T.insert(tk.END,txtExport)
def xmlp(): # take the opened file and write it to a text file
open('somefile.txt', 'w').close()
root = ET.fromstring(txt)
str_params = root.findall('.//parameter/[parameterid="str"]')
for param in str_params:
if param.find('./name').text == 'Text2':
print(format(param.find('./value').text))
with open('somefile.txt', 'a') as the_file:
the_file.write(format(param.find('./value').text))
the_file.write("\n")
exportFileDir = open('somefile.txt', )
txtExport = exportFileDir.read()
T.delete('1.0', END)
T.insert(tk.END, txtExport)
def file_save():
f = filedialog.asksaveasfile(mode='w', defaultextension=".txt")
if f is None: # asksaveasfile return `None` if dialog closed with "cancel".
return
exportFileDir = open('somefile.txt')
txtExport = exportFileDir.read()
f.write(txtExport)
f.close() # `()` was missing.
button = ttk.Button(interface, text="Open text File", command=openfile) # <------
button.grid(column=1, row=3, sticky = W)
buttonex = ttk.Button(interface, text="Extract subtitles", command=extract) # <------
buttonex.grid(column=2, row=3, sticky = W)
buttonexp = ttk.Button(interface, text="X XML P", command=xmlp) # <------
buttonexp.grid(column=2, row=4, sticky = W)
buttonsv = ttk.Button(interface, text="Save as", command=file_save) # <------
buttonsv.grid(column=3, row=3, sticky = W)
interface.mainloop()