PyGTK中的简单,多功能和可重用的输入对话框(有时称为输入对话框) [英] Simple, versatile and re-usable entry dialog (sometimes referred to as input dialog) in PyGTK

查看:339
本文介绍了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


$ 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆