Zer-0-ne

Stack Switcher

Mar 11th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. import gi
  2. gi.require_version('Gtk', '3.0')
  3. from gi.repository import Gtk, GdkPixbuf, Gdk
  4. import os, sys
  5.  
  6. class GUI:
  7. def __init__(self):
  8.  
  9. self.stack = Gtk.Stack()
  10. switcher = Gtk.StackSwitcher()
  11. switcher.set_stack(self.stack)
  12. label1 = Gtk.Label("label 1")
  13. label2 = Gtk.Label("label 2")
  14. self.stack.add_titled (label1, "1", "Page 1")
  15. self.stack.add_titled (label2, "2", "Page 2")
  16. box = Gtk.Box()
  17. box.pack_start(switcher, True, False, 0)
  18. box.pack_start(self.stack, True, True, 0)
  19. box.set_orientation(Gtk.Orientation.VERTICAL)
  20. window = Gtk.Window()
  21. window.add(box)
  22.  
  23. window.show_all()
  24. window.connect("key-press-event", self.key_press)
  25.  
  26. def key_press (self, window, event):
  27. keyname = Gdk.keyval_name(event.keyval)
  28. if not Gdk.ModifierType.CONTROL_MASK:
  29. return
  30. #forward scroll
  31.  
  32. previous_child_active = False
  33. if keyname == "r":
  34. for child in self.stack.get_children():
  35. if previous_child_active == True:
  36. self.stack.set_visible_child(child)
  37. return
  38. previous_child_active = self.stack.get_visible_child() == child
  39.  
  40. #reverse scroll
  41. previous_child = None
  42. if keyname == "s":
  43. for child in self.stack.get_children():
  44. if self.stack.get_visible_child() == child and previous_child != None:
  45. self.stack.set_visible_child(previous_child)
  46. return
  47. previous_child = child
  48.  
  49. def on_window_destroy(self, window):
  50. Gtk.main_quit()
  51.  
  52. def main():
  53. app = GUI()
  54. Gtk.main()
  55.  
  56. if __name__ == "__main__":
  57. sys.exit(main())
Add Comment
Please, Sign In to add comment