2016-08-19 2 views
1

См. Пример ниже.Изменить свойства посредством действий

#!/usr/bin/env python3 

import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk 
from gi.repository import Gio 
import sys 

class ApplicationWindow(Gtk.ApplicationWindow): 
    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 
     self.set_title("Application") 
     self.set_default_size(200, 200) 

     grid = Gtk.Grid() 
     self.add(grid) 

     menubutton = Gtk.MenuButton() 
     grid.attach(menubutton, 0, 0, 1, 1) 

     label = Gtk.Label.new('AnyLabel') 
     grid.attach(label, 0, 1, 1, 1) 

     menumodel = Gio.Menu() 
     menubutton.set_menu_model(menumodel) 
     menumodel.append("New", "app.new") 
     menumodel.append("Quit", "app.quit") 
     menumodel.append("CLabel", "app.clabel") 

class Application(Gtk.Application): 

    def do_activate(self): 
     window = ApplicationWindow(application=self) 
     window.show_all() 

    def do_startup(self): 
     Gtk.Application.do_startup(self) 

     new_action = Gio.SimpleAction.new("new", None) 
     new_action.connect("activate", self.new_callback) 
     self.add_action(new_action) 

     quit_action = Gio.SimpleAction.new("quit", None) 
     quit_action.connect("activate", self.quit_callback) 
     self.add_action(quit_action) 

     clabel_action = Gio.SimpleAction.new("clabel", None) 
     clabel_action.connect("activate", self.clabel_callback) 
     self.add_action(clabel_action) 

    def new_callback(self, action, parameter): 
     print("You clicked New") 

    def quit_callback(self, action, parameter): 
     print("You clicked Quit") 
     self.quit() 

    def clabel_callback(self, action, parameter): 
     """How to change the label here""" 


application = Application() 
exit_status = application.run(sys.argv) 
sys.exit(exit_status) 

Как изменить label к от метода clabel_callback в Application классе?

Как способ clabel_callback может получить доступ к label и изменить любое свойство?

[off] Уведомление о сверлении! Он не понимает, что иногда код стоит тысячи слов.

ответ

2

Возможно, вы хотите, чтобы действие было частью вашего ApplicationWindow, а затем вы ссылались бы на «win.clabel».

Смежные вопросы