PyGTK中简单,通用且可重复使用的输入对话框(有时称为输入对话框)

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%的用例中所需要的.