Answer the question
In order to leave comments, you need to log in
How to pass text via .get() in python?
Hello, I'm making a small text editor and I want to save the typed text, I wrote this code
import os
import tkinter as tk
from tkinter import *
#for name in os.listdir("C://"):
# print (name)
class Main(tk.Frame):
def __init__(self, root):
super().__init__(root)
self.toolbar()
self.Text()
def toolbar(self): # Добавляю в тулбар кнопки
toolbar = tk.Frame(bg='#d7d8e0', bd=4) # Создаём тулбар
toolbar.pack(side=tk.TOP, fill=tk.X)
btn_new = tk.Button(toolbar, text='Создать файл', bd = 4)
btn_new.pack(side=tk.LEFT)
btn_save = tk.Button(toolbar, text='Сохранить файл', bd = 4, command=self.saveTextField)
btn_save.pack(side=tk.LEFT)
def saveTextField(self, textField):
print(textField)
def Text(self):
textField = Text(width=200, height=100, fg='black', wrap=WORD)
textField.pack()
self.saveTextField(textField.get())
if __name__ == "__main__": # Если окно запущенно, то создает наше главное окно
root = tk.Tk()
app = Main(root)
app.pack()
root.title("Text 0.01v")
root.geometry("800x600+450+100")
root.resizable(True, True)
root.mainloop()
self.saveTextField(textField.get('1.0', END))
Answer the question
In order to leave comments, you need to log in
It should be like this:
import os
import tkinter as tk
from tkinter import *
#for name in os.listdir("C://"):
# print (name)
class Main(tk.Frame):
def __init__(self, root):
super().__init__(root)
self.toolbar()
self.Text()
def toolbar(self): # Добавляю в тулбар кнопки
toolbar = tk.Frame(bg='#d7d8e0', bd=4) # Создаём тулбар
toolbar.pack(side=tk.TOP, fill=tk.X)
btn_new = tk.Button(toolbar, text='Создать файл', bd = 4)
btn_new.pack(side=tk.LEFT)
btn_save = tk.Button(toolbar, text='Сохранить файл', bd = 4, command=self.saveTextField)# Вот здесь вы вызываете функцию но не передаёте параметры saveTextField(self, textField << Вот) да и по моему пр таком вызове и нельзя передать параметры
btn_save.pack(side=tk.LEFT)
def saveTextField(self):
with open("example.txt", "w") as file:
file.write(self.textField.get(1.0, END))
def Text(self):
self.textField = Text(width=200, height=100, fg='black', wrap=WORD) # что сделать object доступным во всём классе используйте self я вот это self.textField использую в это функции saveTextField
self.textField.pack()
if __name__ == "__main__": # Если окно запущенно, то создает наше главное окно
root = tk.Tk()
app = Main(root)
app.pack()
root.title("Text 0.01v")
root.geometry("800x600+450+100")
root.resizable(True, True)
root.mainloop()
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question