В pygubu-designer создаю форму form.ui
<?xml version='1.0' encoding='utf-8'?>
<interface version="1.3">
<object class="tk.Frame" id="frame1">
<property name="height">200</property>
<property name="width">200</property>
<layout manager="pack">
<property name="side">top</property>
</layout>
<child>
<object class="tk.Entry" id="entry1">
<property name="text" translatable="yes">набранный текс</property>
<bind sequence="<KeyPress>" handler="callback" add="" />
<layout manager="pack">
<property name="side">top</property>
</layout>
</object>
</child>
</object>
</interface>
Далее создаю файл start_form.py с кодом:
#!/usr/bin/python3
import pathlib
import tkinter as tk
import pygubu
PROJECT_PATH = pathlib.Path(__file__).parent
PROJECT_UI = PROJECT_PATH / "form.ui"
class FormApp:
def __init__(self, master=None):
self.builder = builder = pygubu.Builder()
builder.add_resource_path(PROJECT_PATH)
builder.add_from_file(PROJECT_UI)
# Main widget
self.mainwindow = builder.get_object("frame1", master)
builder.connect_callbacks(self)
def run(self):
self.mainwindow.mainloop()
def callback(self, event=None):
pass
if __name__ == "__main__":
root = tk.Tk()
app = FormApp(root)
app.run()
Как к примеру в функции callback (bind = KeyPress) обратится к элементу формы entry1 и получить вводимые данные для дальнейшей работы. К примеру преобразовать в верхний регистр.
Должно быть что-то типа этого, но тут я неправильно обращаюсь к entry1:
def callback(self, event=None):
print(self.mainwindow.entry1.get().upper())