pygi 如何在不运行函数的情况下切换按钮

pygi 如何在不运行函数的情况下切换按钮

我正在快速编写这个应用程序。

我正在寻找一种无需运行与该按钮相连的功能即可切换按钮的方法。

def on_button_text_italic_toggled(self, widget):
    print "Italic"

def on_buttone_test_clicked(self, widget):
    self.button_text_italic.set_active(True)

所以我需要这个来使 button_text_italic 被切换但不打印出“斜体”文本。

谢谢你的帮助!

答案1

如果您希望函数在切换信号发出的大部分时间运行,而不是在手动切换信号时运行(例如,加载已保存的设置并显示相应状态时),则需要阻止和取消阻止信号。为此,您需要在信号连接到函数时返回的 handle_id。只需在连接信号时分配一个变量即可。以下是一个例子:

#!/usr/bin/python
from gi.repository import Gtk

def on_toggle(widget,data=None):
    print "toggled, emitted signal"

def on_button1_clicked(widget, data=None):
    print "manually toggle, no signal"
    toggle.handler_block(handle_id)
    state=toggle.get_active()
    toggle.set_active(not state)
    toggle.handler_unblock(handle_id)


win=Gtk.Window()
win.connect('destroy', Gtk.main_quit)
box=Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
button1=Gtk.Button('Toggle with no signal')
button1.connect('clicked', on_button1_clicked)
button1.show()
box.pack_start(button1,True,True,10)
toggle=Gtk.ToggleButton('Toggle')
handle_id=toggle.connect('toggled', on_toggle)
toggle.show()
box.pack_start(toggle,True,True,0)
box.show_all()
win.add(box)
win.show()
Gtk.main()

答案2

on_button_text_italic_toggled是一个对象方法,在on_buttone_test_clicked被调用时会被调用,因此很自然地执行它指定的代码。

您必须用Python 关键字替换该print "Itallic"行,但这会让您什么都不做,所以您可能不想调用它。passon_button_text_italic_toggled

您可以了解有关函数的更多信息这里以及如何定义类和方法这里

相关内容