2

我正在开发一个 PyGTK GUI 项目,我想知道,有没有办法从 gtk.Entry 获取变量值?

        text=gtk.Entry(0)
    text.set_activates_default(True)
    port = text.get_text()

这不起作用,文本框默认为空,get_text() 返回空字符串,有什么想法吗?

4

3 回答 3

3

这不起作用,文本框默认为空,get_text() 返回空字符串,有什么想法吗?

听起来您正在寻找一些用户输入后获取文本。为了做到这一点,gtk 使用信号,允许您将用户操作连接到将做某事的某些功能。在您的情况下,您希望此函数从输入中获取文本。因为您没有描述用户交互,所以我将举一个最简单的例子。如果您的 GUI 中有一个按钮,当单击该按钮时,该按钮会抓取当时在条目中输入的任何内容,您可以这样做:

button = gtk.Button( 'Click Me')
button.connect( 'clicked', on_button_click )

然后,定义on_button_click函数:

def on_button_click(self, widget, data=None):
    port = text.get_text()
    print 'Port: %s' % port

因此,使用上面的示例代码,您将拥有一个按钮,当您单击该按钮时,它会从您的 gtk.Entry 中获取文本。

查看此链接以获取有关如何在 pygtk 中使用信号的简单示例

于 2012-05-07T14:49:14.877 回答
1

由于您的文本字段默认为空,因此 get_text() 将返回空字符串。添加按钮回调函数或其他一些函数。因此,每当调用该函数时,您都将使用从 Entry 中获取字符串

text.gtk_text()

您可能想在这里使用 self 。因为您将访问其他函数而不是主线程中的条目,请使用

self.text=gtk.Entry()
self.text.set_activates_default(True)

def foo(self,widget,event): # some callback function
    port = self.text.get_text()
    print port
于 2012-05-05T20:35:57.833 回答
0

The retrieving method is the correct one, but right after the creation, the user can't yet have typed anyting into the field.

You would have to wait for the user to actually type something into the field, and afterwards calling get_text().

于 2012-05-05T20:24:33.003 回答