这是我在 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”函数链接起来。
但如果我执行此命令并尝试打开开关,GUI 就会挂起。我确实尝试通过脚本和命令行执行此操作并添加“打印开关状态”,导致无限循环(正确与错误)
我尝试了我制作的许多其他函数,但它们都无法解决这个问题。事实上,这是我制作的所有其他函数的“本质”。
为什么会出现这种情况?
循环在哪里?
我在某些方面错了吗?
感谢帮助!
(如果您需要查看我其余的错误函数,只需询问它们即可,但我认为它们不会有帮助......)