我正在为我的日志分析脚本编写一个基本的gui。我使用GTK 2x,Glade和Python 2.7.3。如何将文本框中的字符串传递给函数
我有一些全局变量的定义,需要根据gui文本框中的用户输入来更改这些变量。整个布局都是在空地上进行的。任何提示如何将字符串和值从小部件传递到GUI类之外的函数?从林间空地文件
示例文本框定义:
<child>
<object class="GtkEntry" id="serverIDtext">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">●</property>
<property name="text" translatable="yes">Server name.</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
<property name="primary_icon_sensitive">True</property>
<property name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
</packing>
</child>
GUI类:
import pygtk
import gtk
import gtk.glade
from pyParse2 import *
class GUI:
def __init__(self):
builder = gtk.Builder()
builder.add_from_file("parsergui.glade")
self.window = builder.get_object("window1")
builder.connect_signals(self)
def on_window_destroy(self, widget, data = None):
gtk.main_quit()
def parseButton(self, widget, data = None):
parseLaunch()
编辑按MG。建议: 我想你的第一个忠告,并准备像这样:
import pygtk
import gtk
import gtk.glade
from pyParse2 import *
class GUI:
def __init__(self):
builder = gtk.Builder()
builder.add_from_file("parsergui.glade")
self.window = builder.get_object("window1")
builder.connect_signals(self)
self.sID = builder.get_object("serverIDtext")
def on_window_destroy(self, widget, data = None):
gtk.main_quit()
def parseButton(self, widget, data = None):
global serverID
serverID = self.sID
print serverID
parseLaunch()
,并得到这样的:
<gtk.Entry object at 0x2a97a58 (GtkEntry at 0x20e9118)>
据我了解(我是最有可能是错误的),我不能使用get_text,但必须做get_object,它不会返回一个字符串。有没有办法解决这个问题?
O_O
'self.sID'是一个'GtkEntry'。您需要调用'self.sID.get_text()'获取'GtkEntry'内的文本。 – liberforce
我试着调用self.sID.get_text(),但我应该在哪里调用它?正如我看到的,我应该首先get_object,因为我已经有了,然后调用self.sID.get_text()来获取Entry的值,对吧? – panta
哈!有用。现在只需将值传递给其他函数,这太棒了!非常感谢liberforce! – panta