Я решил вашу проблему.
Для этого создайте метод / функцию класса PayrollSummary с именем printpayroll и вставьте в него текст «текст, отображаемый из btShowPayroll».Сделайте команду кнопки 'lambda: self.printpayroll ()', чтобы она запустила метод / функцию.
from tkinter import *
class PayrollSummary:
def __init__(self):
window = Tk()
window.title("Employee Payroll")
#Add Frame 1
self.frame1 = Frame(window)
self.frame1.pack()
#Add ReadFile Button
self.btReadFile = Button(self.frame1, text = "Read File")
#Text Window
self.text = Text(window)
self.text.pack()
#Add ShowPayroll Button
self.btShowPayroll = Button(self.frame1, text = "Show Payroll", command = lambda:self.printpayroll()) #When I press the button "Show Payroll", I want it to display a text in the textbox in the frame below. I tried command = printPayroll but i dont think its working :(
#printPayroll <- use this function to do so
#Formatting
self.btReadFile.grid(row = 1, column = 2, sticky="w")
self.btShowPayroll.grid(row = 2, column = 2, sticky="w")
window.mainloop()
def printpayroll(self):
self.text.insert(END, "text displayed from btShowPayroll") #when btShowPayroll is pressed I want it to display text here!
PayrollSummary()
Этот код создает это окно при запуске:

Вот что происходит при нажатии кнопки «Показать платежную ведомость»:

Как видите, произошло то, что вы хотели.Текст выводится на экран.Это происходит потому, что текст вставляется в текстовое поле.
Некоторые рекомендации:
Я рекомендую создать окно программы внекласс, потому что было бы лучше, чтобы ваша программа имела только одно окно, а затем несколько кадров для каждого экрана графического интерфейса программы.
Я рекомендую добавить self.перед множеством виджетов tkinter, которые вы создали в своем классе, чтобы они создавались как атрибуты объектов, которые создаются как экземпляры класса.
Я рекомендую вам изменить код, который запускаетсякласс:
PayrollSummaryScreen = PayrollSummary()
Я бы сделал это так, чтобы был создан объект PayrollSummaryScreen и чтобы каждый из атрибутов объекта был создан.например, frame1, btReadFile, btShowPayroll и text могут быть доступны с помощью объекта.Например, вы можете скрыть текст, если хотите, извне класса, используя:
PayrollSummaryScreen.text.pack_forget()
Это может быть полезно для вас в будущем, например, если вам нужно скрыть экран «Сводка заработной платы» искрыв текстовое поле text и кнопки «Read File» и «Show Payroll», вы можете скрыть атрибут frame1 объекта.Поэтому это скрыло бы дочерние виджеты фрейма, которые являются текстовым полем «текст» и кнопками «Читать файл» и «Показать платежную ведомость».Вы можете скрыть атрибут frame1 объекта экрана сводной ведомости заработной платы, используя:
PayrollSummaryScreen.frame1.pack_forget()
Если бы вы приняли эти рекомендации, это был бы код:
from tkinter import *
window = Tk()
window.title("Employee Payroll")
class PayrollSummary:
def __init__(self):
#Add Frame 1
self.frame1 = Frame(window)
self.frame1.pack()
#Add ReadFile Button
self.btReadFile = Button(self.frame1, text = "Read File")
#Text Window
self.text = Text(window)
self.text.pack()
#Add ShowPayroll Button
self.btShowPayroll = Button(self.frame1, text = "Show Payroll", command = lambda:self.printpayroll()) #When I press the button "Show Payroll", I want it to display a text in the textbox in the frame below. I tried command = printPayroll but i dont think its working :(
#printPayroll <- use this function to do so
#Formatting
self.btReadFile.grid(row = 1, column = 2, sticky="w")
self.btShowPayroll.grid(row = 2, column = 2, sticky="w")
window.mainloop()
def printpayroll(self):
self.text.insert(END, "text displayed from btShowPayroll") #when btShowPayroll is pressed I want it to display text here!
PayrollSummaryScreen = PayrollSummary()
Надеюсь, эта дополнительная информация поможет!