gpt4 book ai didi

signals - PyGTK - GtkEntry 光标处插入信号不起作用

转载 作者:行者123 更新时间:2023-12-04 05:41:41 25 4
gpt4 key购买 nike

我试图在我的代码中使用 GtkEntry.insert-at-cursor 信号,但它似乎不起作用。

    def on_servername_activate(self, widget):
output = StringIO.StringIO()
servername = widget.get_text()
self.output.write("USHARE_NAME="+servername+'\n')

这是我想要使用的代码的一部分 insert-at-cursor .我几乎可以肯定这是我犯的一个错误。我替换了 on_servername_activateon_servername_insertatcursor (因为 on_servername_insert-at-cursor 在第一个连字符处给了我一个语法错误)并且在将文本插入框中时没有任何 react 。 output 中没有插入任何内容, 但是一切都与 activate 完美配合信号。

最佳答案

信号和方法之间似乎存在概念错误。

一方面,当事件发生时触发信号,这些信号可以命名为字符串,如 '插入光标' 'insert_at_cursor' .另一方面,您需要将这些信号(在小部件中)与您的函数/方法连接起来。函数/方法可以具有任意名称,为了使它们更易于阅读,我们尝试将它们命名为与信号一样接近,但这不是强制性的。

在您的情况下,您可能希望拥有类似的东西:

class Foo:
...
def create_widgets(self):
entry.gtkEntry()
entry.connect('insert-at-cursor', self.entry_insert_at_cursor)

def entry_insert_at_cursor(self, *args):
# some code

如您所见,在 entry.connect(...) 中发生了信号和方法之间的匹配。
这解释了代码中的语法错误。

另一个误解似乎是使用光标处插入信号。对于该信号,您必须将条目绑定(bind)到一个键,这似乎不是您正在寻找的行为。根据您所针对的 GTK 版本,您可能希望使用:
      entry.connect('changed', self.entry_changed)

或者
      entry.connect('insert-text', self.entry_insert_text)

在后者中,您的方法将接收更改的文本以及位置。同样,您可以直接处理与条目关联的缓冲区:
      entry.connect('inserted-text', self.buffer_entry_inserted_text)

该方法将额外接收插入的字节数。

关于signals - PyGTK - GtkEntry 光标处插入信号不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11189263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com