PyGTK中的简单,多功能和可重用的输入对话框(有时称为输入对话框) [英] Simple, versatile and re-usable entry dialog (sometimes referred to as input dialog) in PyGTK
问题描述
我正在寻找一个带有文本输入小部件的简单对话框,要求用户输入一些信息。该对话框应该很容易运行(如 gtk.MessageDialog
变体)并且灵活。
当然还有一些例子,但它们要么不够灵活,要么根本不适合我的口味。
我讨厌重新发明轮子或对话。
p>基于示例我找到了(感谢 Ardoris !) ,我想出了一个对话子类...希望它可以帮助那里的人!
#!/ usr / bin / env python
import gtk
类EntryDialog(gtk.MessageDialog):
def __init __(self,* args,** kwargs):
'''
创建一个新的EntryDialog。采用通常的
MessageDialog构造函数的所有参数加上一个可选的命名参数
default_value来指定条目的初始内容。
'''
如果kwargs中的'default_value':
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 $ b $ 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
返回文本
如果用户按下 run()
方法返回输入框中输入的文本c $ c><进入> 或点击确定。如果点击取消
或按下< Esc>
, run()
方法返回 None
。除此之外,对话框应该像任何其他 gtk.MessageDialog
实例一样运行。
$ b
也许这不是非常普遍的,因为它假设你总是有Ok作为选项,但这正是我用例中99%所需要的。 / p>
I am searching for a simple dialog with a text entry widget asking the user for some input. The dialog should be easy to run (like the gtk.MessageDialog
variants) and as flexible.
There are of course some examples but they are either not flexible enough or too complicated to construct for my taste.
I hate re-inventing the wheel... or a dialog.
Based on an example I found (thanks Ardoris!), I came up with a dialog subclass... hope it helps someone out there!
#!/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
The run()
method returns either the text entered in the entry box if the user presses <Enter>
or clicks Ok. If Cancel
is clicked or <Esc>
pressed, the run()
method returns None
.
Except for that, the dialog should behave as any other gtk.MessageDialog
instance.
Maybe that is not very general as it assumes you will always have Ok as an option, but that is what I need in 99% of my use cases anyway.
这篇关于PyGTK中的简单,多功能和可重用的输入对话框(有时称为输入对话框)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!