Есть несколько вещей, которые нужно исправить, и несколько вещей, которые я бы изменил.
self.essayAdd.mainloop
здесь ничего не делает. Вам нужно добавить ()
в конце так: self.essayAdd.mainloop()
.
self.userEssay = self.userEssayLabel.get("1.0", END)
не происходит, когда вы думаете. Это происходит только в том случае, если ваш код запускается и никогда больше. Так что в основном это пустая строка, присвоенная self.userEssay
.
Я бы не использовал place()
для кнопок и надписей. place()
имеет свое место, но по большей части вы захотите использовать grid()
или pack()
для большинства мест размещения ваших виджетов.
Вы злоупотребляете self.
. Префикс self.
используется для идентификации атрибутов класса, и единственное время, когда что-то должно быть атрибутом класса, - это когда к нему будет обращаться из отдельного метода, чем он был создан внутри или с помощью кода вне класса.
Вы используете import tkinter
и from tkinter import *
, когда вам нужен только один. Предпочтительный метод import tkinter as tk
. Затем вы просто используете префикс tk
везде, где вам нужно.
Видя, что вы используете класс, который я бы унаследовал от Tk()
вместо self.essayAdd = tkinter.Tk()
. Таким образом, мы можем упростить управление и получить всю функциональность, которая нам нужна в классе.
Все, что здесь сказано, - ваш код немного очищен. Дайте мне знать, если у вас есть какие-либо вопросы.
import tkinter as tk
class UserInterface(tk.Tk):
def __init__(self):
super().__init__()
self.geometry('1500x900')
self.title('Text Analysis')
self.columnconfigure(0, weight=1)
self.columnconfigure(1, weight=1)
self.main_frame = tk.Frame(self)
self.main_frame.columnconfigure(0, weight=1)
self.main_frame.grid(row=1, column=0, columnspan=2, sticky='nsew')
tk.Label(self, text='Please paste your essay below.',
font=('Helvetica', 16)).grid(row=0, column=0, columnspan=2, sticky='ew')
tk.Label(self, text='Uploading your essay', fg='white', bg='purple',
font=('Helvetica', 20)).grid(row=2, column=0, columnspan=2, sticky='ew')
self.user_essay_label = tk.Text(self.main_frame)
scrollbar = tk.Scrollbar(self)
scrollbar.config(command=self.user_essay_label.yview)
self.user_essay_label.config(yscrollcommand=scrollbar.set)
scrollbar.grid(row=1, column=2)
self.user_essay_label.grid(row=0, column=0, sticky='nsew')
tk.Button(self, text='Quit', fg='purple', font=('Helvetica', 16),
command=self.destroy).grid(row=3, column=0)
tk.Button(self, text='Enter', fg='purple', font=('Helvetica', 16),
command=self.essay_window).grid(row=3, column=1)
def essay_window(self):
self.main_frame.destroy()
self.main_frame = tk.Frame(self)
self.main_frame.grid(row=1, column=0, columnspan=2, sticky='nsew')
tk.Label(self.main_frame, text='Essay Analysis', fg='white', bg='purple',
font=('Helvetica', 20)).pack(fill='x')
tk.Label(self.main_frame, text=self.user_essay_label.get('1.0', 'end'), fg='white', bg='purple',
font=('Helvetica', 16)).place(x=1235, y=600)
if __name__ == '__main__':
UserInterface().mainloop()