这是我在StackOverflow的第一个问题,所以如果有些信息没有出现或者我错过了一些重要信息,请耐心等待,但无论如何我都会尽我所能:)
最近我开始编写Python2.7代码,所以我不太擅长。在玩PyGtk,PyGObject,Glade等时,我发现了一些特别关于开关的东西(Haven没有尝试过任何其他小部件,所以我不知道它是否发生在其他地方。很可能它不会,我希望...)
我用一个"窗口制作了一个非常基本的GUI"加一个"开关"使用Glade
我的目标是在用户尝试激活它之后停用开关,如果以前提出了一些例外,例如:
我制作了一些代码,过了一会儿,我注意到这段代码创建了一个类似循环的块,然后阻止了GUI的窗口:
builder = Gtk.Builder()
window1 = builder.get_object('window')
switchie = builder.get_object('switchie')
switchie.set_active(False)
def Hi(switch, active):
print switchie.get_active()
switchie.set_active(not switchie.get_active())
switchie.connect("""notify::active""", Hi)
window1.set_position(Gtk.WindowPosition.CENTER)
window1.connect("delete-event", Gtk.main_quit)
window1.show_all()
如果我是对的," switchie.connect"链接" switchie"对象"嗨" func每当" switchie"点击了。
但是如果我执行此操作并尝试打开开关,GUI就会挂起。我确实尝试通过脚本&命令行并添加"打印开关状态",导致无限循环(True& False)
我尝试过我制作的许多其他功能,但他们都无法解决这个问题。事实上,这就是"本质"我所做的所有其他功能。
为什么会这样?
循环在哪里?
我错了吗?
感谢帮助!
(如果你需要查看其余的错误功能,只需要问他们,但我认为他们不会帮助......)
答案 0 :(得分:1)
你想像这样连接开关:
switchie.connect("""activate""", Hi)
每次点击它时,只会被称为一次。你所做的是在它发生变化之后连接到信号,所以它不断变化,永远不会追赶。您还需要更改
def Hi(switch, active):
到
def Hi(switch, active = None):
用于键盘支持。