Код: Выделить всё
import sys
import gi
# Require specifically GTK 4.0 and Adwaita 1
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
from gi.repository import Gtk, Adw, Gio, GLib, GObject
# XML User Interface Definition
UI_XML = """
700
500
Width Tracker
vertical
Test
stack
Adaptive Example
True
Test Page 1
Test Page 1
org.gnome.Settings-display-symbolic
Test Page 1
Test Page 1
Test Page 2
Test Page 2
dialog-information-symbolic
Test Page 2
Test Page 2
stack
False
"""
class WidthTrackerApp(Adw.Application):
def __init__(self, **kwargs):
super().__init__(application_id='com.example.Test',
flags=Gio.ApplicationFlags.FLAGS_NONE,
**kwargs)
def do_activate(self):
builder = Gtk.Builder.new_from_string(UI_XML, -1)
self.window = builder.get_object('main_window')
self.switcher_title = builder.get_object('switcher_title')
self.switcher_bar = builder.get_object('switcher_bar')
self.window.set_application(self)
self.switcher_title.bind_property(
'title-visible',
self.switcher_bar,
'reveal',
GObject.BindingFlags.SYNC_CREATE
)
self.window.present()
if __name__ == '__main__':
app = WidthTrackerApp()
app.run(sys.argv)
Во втором примере кода я использую точку останова, которая не позволяет узким кнопкам отображаться в строке заголовка, но я не могу заставить анимацию перехода работать с этим методом.
Код: Выделить всё
import sys
import gi
# Require specifically GTK 4.0 and Adwaita 1
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
from gi.repository import Gtk, Adw, Gio, GLib, GObject
# XML User Interface Definition
UI_XML = """
700
500
Test
max-width: 550px
True
title_page
vertical
crossfade
250
switcher_page
stack
wide
title_page
Test
True
Test Page 1
Test Page 1
org.gnome.Settings-display-symbolic
Test Page 1
Test Page 1
Test Page 2
Test Page 2
dialog-information-symbolic
Test Page 2
Test Page 2
stack
False
"""
class WidthTrackerApp(Adw.Application):
def __init__(self, **kwargs):
super().__init__(application_id='com.example.Test',
flags=Gio.ApplicationFlags.FLAGS_NONE,
**kwargs)
def do_activate(self):
builder = Gtk.Builder.new_from_string(UI_XML, -1)
self.window = builder.get_object('main_window')
self.window.set_application(self)
self.window.present()
if __name__ == '__main__':
app = WidthTrackerApp()
app.run(sys.argv)
Подробнее здесь: https://stackoverflow.com/questions/798 ... ther-using
Мобильная версия