Как реализовать GtkLockButton?
Как работает GtkLockButton? Задача в том чтоб в приложение не лезли, кто попало. Прочитал GtkLockButton: GTK+ 3 Reference Manual и все равно не понял, как связать одно с другим.
Последовательность действий приложения:
При запуске приложения GtkLockButton ('main_lock_button') в состоянии "Разблокировать", а GtkPaned ('main_paned') неактивен
self.paned = self.builder.get_object("main_paned") self.paned.set_sensitive(False)При нажатие "Разблокировать" появляется GtkDialog где можно ввести Имя пользователя и Пароль
После аутентификации 'main_paned' активен, а 'main_lock_button' в состоянии "Заблокировать"
main.clade
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkApplicationWindow" id="main_app_win">
<property name="can_focus">False</property>
<property name="window_position">center</property>
<property name="default_width">1024</property>
<property name="default_height">728</property>
<property name="icon_name">accessories-dictionary</property>
<property name="gravity">center</property>
<signal name="destroy" handler="on_main_app_win_destroy" swapped="no"/>
<child type="titlebar">
<object class="GtkHeaderBar" id="main_header_bar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">Заголовок</property>
<property name="subtitle" translatable="yes">Подзаголовк</property>
<property name="show_close_button">True</property>
<child>
<object class="GtkImage" id="main_image_user">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">avatar-default</property>
<property name="use_fallback">True</property>
<property name="icon_size">3</property>
</object>
</child>
<child>
<object class="GtkLabel" id="main_label_user">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Пользователь</property>
<property name="justify">center</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLockButton" id="main_lock_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_lock" translatable="yes">Главное окно разблокировано.
Нажмите, чтобы предотвратить дальнейшие изменения</property>
<property name="tooltip_unlock" translatable="yes">Главное окно заблокировано.
Нажмите, чтобы сделать изменения</property>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
<child>
<object class="GtkPaned" id="main_paned">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="orientation">vertical</property>
<property name="position">47</property>
<property name="position_set">True</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</interface>
main
#!/usr/bin/env python3
# coding: utf-8
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gio
class Main():
def __init__(self):
self.gladefile = "/main/main.glade"
self.builder = Gtk.Builder()
self.builder.add_from_file(self.gladefile)
self.builder.connect_signals(self)
self.paned = self.builder.get_object("main_paned")
self.paned.set_sensitive(False)
self.window = self.builder.get_object("main_app_win")
self.window.show()
self.lockbutton = self.builder.get_object("main_lock_button")
#print(self.lockbutton.get_permission())
def on_main_app_win_destroy(self, widget):
Gtk.main_quit()
if __name__ == '__main__':
main = Main()
Gtk.main()