[英]Some questions about switches in python
这是我在StackOverflow的第一个问题,所以如果没有一些信息或者我错过了一些重要的信息,请耐心等待,但无论如何我会尽我所能:)
最近我开始用Python2.7编写代码,所以我不太擅长它。 在玩PyGtk,PyGObject,Glade等时,我发现了一些特别关于开关的东西(没有尝试过任何其他小部件,所以我不知道它是否发生在其他地方。很可能它没有,我希望... )
我用一个“窗口”和一个使用Glade的“开关”创建了一个非常基本的GUI
我的目标是在用户尝试激活它之后停用开关,如果之前提出了一些例外,例如:
我做了一些代码,过了一会儿,我注意到这段代码创建了一个类似循环的块,之后阻止了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”被点击,“switchie.connect”就会将“switchie”对象与“Hi”func链接起来。
但如果我执行此操作并尝试打开开关,GUI将挂起。 我试图通过脚本和命令行执行此操作并添加“打印开关状态”,从而产生无限循环(True&False)
我尝试了许多其他功能,但他们都无法解决这个问题。 事实上,这是我所有其他功能的“本质”。
为什么会这样?
循环在哪里?
我错了吗?
感谢帮助!
(如果你需要查看其余的错误功能,请问他们,但我不认为他们会帮助......)
你想像这样连接开关:
switchie.connect("""activate""", Hi)
这只会在每次点击时被调用一次 。 你所做的是在它发生变化之后连接到信号,所以它不断变化,永远不会追赶。 你也想改变
def Hi(switch, active):
至
def Hi(switch, active = None):
用于键盘支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.