Fri*_*dFX 5 python gtk user-interface pygtk
我正在搜索带有文本输入小部件的简单对话框,要求用户输入一些内容.对话框应该易于运行(如gtk.MessageDialog
变体)并且灵活.
当然有一些例子,但它们要么不够灵活,要么太复杂,不能根据我的口味进行构建.
我讨厌重新发明轮子......或对话.
Fri*_*dFX 10
基于我发现的一个例子(感谢Ardoris!),我想出了一个对话子类...希望它可以帮助那里的人!
#!/usr/bin/env python
import gtk
class EntryDialog(gtk.MessageDialog):
def __init__(self, *args, **kwargs):
'''
Creates a new EntryDialog. Takes all the arguments of the usual
MessageDialog constructor plus one optional named argument
"default_value" to specify the initial contents of the entry.
'''
if 'default_value' in kwargs:
default_value = kwargs['default_value']
del kwargs['default_value']
else:
default_value = ''
super(EntryDialog, self).__init__(*args, **kwargs)
entry = gtk.Entry()
entry.set_text(str(default_value))
entry.connect("activate",
lambda ent, dlg, resp: dlg.response(resp),
self, gtk.RESPONSE_OK)
self.vbox.pack_end(entry, True, True, 0)
self.vbox.show_all()
self.entry = entry
def set_value(self, text):
self.entry.set_text(text)
def run(self):
result = super(EntryDialog, self).run()
if result == gtk.RESPONSE_OK:
text = self.entry.get_text()
else:
text = None
return text
Run Code Online (Sandbox Code Playgroud)
run()
如果用户按下<Enter>
或单击"确定",该方法将返回在输入框中输入的文本.如果Cancel
单击或<Esc>
按下该run()
方法,则返回该方法None
.
除此之外,对话框应该像任何其他gtk.MessageDialog
实例一样.
也许这不是很一般,因为它假设你总是选择Ok,但这仍然是我在99%的用例中所需要的.