Olej писал(а):
Логика такого дизайнера такая:
- построив UI сохраняем его как XML файл ... в экзамплах они приводят helloworld.ui ...
- а потом он используется в коде, как пример приводится:
Леплю такое вот условное приложение, похожее на то, что мне нужно:
Вложение:
p10.png [ 70.06 КБ | Просмотров: 19 ]
Код:
olej@ACER:~/2019_WORK/own.WORK/python$ ls -l xlock.*
-rwxr-xr-x 1 olej olej 1008 фев 3 17:50 xlock.py
-rw-r--r-- 1 olej olej 4362 фев 3 17:46 xlock.ui
olej@ACER:~/2019_WORK/own.WORK/python$ file xlock.ui
xlock.ui: XML 1.0 document text
- xlock.ui - это то, что сгенерировал
pygubu - XML описание структуры UI;
- xlock.py - это то, что я написал для использования этого UI:
Код:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import tkinter as tk
import pygubu
class Application:
def __init__(self, master):
#1: Create a builder
self.builder = builder = pygubu.Builder()
#2: Load an ui file
builder.add_from_file( 'xlock.ui' )
#3: Create the widget using a master as parent
self.mainwindow = builder.get_object( 'Frame_1', master )
if __name__ == '__main__':
root = tk.Tk()
app = Application(root)
root.mainloop()
Запуск:
Код:
olej@ACER:~/2019_WORK/own.WORK/python$ ./xlock.py
ERROR:pygubu.builder.builderobject:Failed to set property 'container' on class '<class 'tkinter.Frame'>'. TclError: can't modify -container option after widget is created
Вложение:
p11.png [ 9.54 КБ | Просмотров: 19 ]
Оно сырое, горбатое, но это минимально необходимо и достаточно, для того что нужно! : есть дерево виджетов, их имена, и класс приложения, который нужно только расширять.
P.S. Обратите внимание на картинку дизайнера - он использует компоновщик grid а не pack Tk, что тоже то, что хотелось.