gpt4 book ai didi

python - 关于python中开关的一些问题

转载 作者:行者123 更新时间:2023-11-28 18:29:07 27 4
gpt4 key购买 nike

这是我在 StackOverflow 的第一个问题,所以如果某些信息不存在或者我错过了一些重要的事情,请耐心等待我,但无论如何我会尽力而为:)

最近开始用Python2.7写代码,不是很擅长。在玩 PyGtk、PyGObject、Glade 等时,我发现了一些关于开关的特别之处(没有尝试过任何其他小部件,所以我不知道它是否发生在其他地方。很可能它不会,我希望...... )

我使用 Glade 制作了一个非常基本的 GUI,其中包含一个“窗口”和一个“开关”

我的目标是在用户尝试激活开关后停用它,如果之前出现了一些异常,比如:

  • 激活它 --> * 发现错误 --> * 停用它

我写了一些代码,过了一会儿,我注意到这段代码创建了一个类似循环的 block ,随后阻塞了 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 就会挂起。我确实尝试通过脚本和命令行执行此操作并添加“打印开关状态”,导致无限循环(对与错)

我尝试了我制作的许多其他函数,但它们都无法解决这个问题。事实上,这是我制作的所有其他功能的“本质”。

为什么会这样?

循环在哪里?

我是不是哪里错了?

感谢帮助!

(如果您需要查看我的其他错误功能,请索取它们,但我认为它们不会有帮助...)

最佳答案

你想像这样连接开关:

switchie.connect("""activate""", Hi)

它只会在每次被点击时被调用一次。你所做的是在信号发生变化后连接到信号,所以它一直在变化,永远不会 catch 。你也会想要改变

def Hi(switch, active):

def Hi(switch, active = None):

用于键盘支持。

关于python - 关于python中开关的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38940826/

27 4 0
文章推荐: css - 限制