Вставка производного класса для поля ввода с числами, напечатанными на производном от кнопки классе, который является частью производного от фрейма класса - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть окно и подкласс на основе фреймов, в котором есть поле ввода и кнопка, оба из производного подкласса Entrybox и Button. У подкласса кнопки есть clickme (), который должен вставить текст в поле ввода. Есть ли способ сделать это?

root = Tk.tk()
class CalcFrame(tk.Frame):
...
...
myEntrybox = tk.Entry(self, width =20) #ENTRY BOX WIDGET INSIDE CalcFrame
myEntrybox.grid(column=0,row=0)
...
...
button_A = CalcButton(self,text="A")
button_B = CalcButton(self,text="B")
button_C = CalcButton(self,text="C")
...
#END OF CalcFrame

class CalcButton:
... #INIT
...
self["command"] = self.click_me


click_me(self):
 # I want to update the text box with button's text(A,B or C) 

#END OF CalcButton

Возможен ли этот сценарий click_me ()? если да, то как мне go сделать это? И кнопки, и поля ввода являются экземплярами внутри фрейма

1 Ответ

0 голосов
/ 20 апреля 2020

Следующий фрагмент должен решить вашу проблему.

import tkinter as tk
root = tk.Tk()

def set_text(text):
    entry_box.delete(0,"end")
    entry_box.insert(0, text)

entry_box = tk.Entry(width =50) #ENTRY BOX WIDGET INSIDE CalcFrame
entry_box.grid(column=0,row=0)
entry_box.pack()

btnSet = tk.Button(root, height=1, width=10, text="A", command=lambda:set_text("A"))
btnSet.pack()
btnSet = tk.Button(root, height=1, width=10, text="B", command=lambda:set_text("B"))
btnSet.pack()
btnSet = tk.Button(root, height=1, width=10, text="C", command=lambda:set_text("C"))
btnSet.pack()

root.mainloop()

Выходное изображение enter image description here

...