首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python TUI弹出窗口

python TUI弹出窗口
EN

Stack Overflow用户
提问于 2015-07-10 18:49:57
回答 2查看 820关注 0票数 1

我需要一些提示来找到一个简单的解决方案来插入一个python控制台应用程序内的弹出窗口。

此应用程序通常在无人值守的情况下运行,因为它是从crontab启动的。

它使用everywhere日志来显示消息并将它们保存到日志文件中。

然而,在某些情况下,当找不到合适的选项时,应用程序需要用户干预来选择一些选项。

这就是为什么我在argparse中插入了--interactive选项,当应用程序需要用户干预时,控制台中应该会出现一个弹出窗口,允许用户在列表中的某些项目之间进行选择。

下面是输出的摘录,为您提供一个示例:

代码语言:javascript
复制
INFO    : Try to fuzzy-match 'Orange Itbn'
INFO    : Fuzzy-matched alternative entries : ['Orange Is The New Black']
INFO    : Fuzzy matched 'Orange Itbn' as seriesname 'Orange Is The New Black'
INFO    : MOVE /Users/spadazz/testing/orange itbn.s03e10.hdtv.720p.mkv TO:
/Volumes/NAS/TV Shows/Orange Is The New Black/S03/Orange Is The New Black.S03E10.hdtv.720p.mkv
INFO    : Try to fuzzy-match 'Sur'
INFO    : Fuzzy-matched alternative entries : ['Survivors 2008', 'Survivors']
WARNING : 
                    Series 'Sur' not uniquely matched in titles
                    Choose between these titles :
                    ['Survivors 2008', 'Survivors']

WARNING : 
                        ******************************************
                        **** INSERT HERE THE CALL TO THE POPUP ***
                        ******************************************

现在,我已经阅读了一些关于tkinter、curses和npyscreen的文档,但是我想不出一些简单的东西来达到这个目的。

我不想弄乱应用程序的结构,也不想把日志消息放在主窗口中。

我只想要一个弹出窗口,让我选择一些选项,即使是一个简单的按键,如'1‘和'2’等…

这也应该是一个python解决方案,可能不需要从os调用外部命令。

有什么想法吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-07-13 02:45:45

在写了npyscreen的Nicholas Cole的帮助下,我能够修复这个问题:

代码语言:javascript
复制
import npyscreen as np

class myPop(np.NPSApp):

def setopt(self, title, oList, multi):
    self.title = title
    self.options = oList
    self.multi = multi
    self.height = len(self.options)+1

def main(self):
    F = np.Popup(name="Choose an option")
    if self.multi:
        opt = F.add(np.TitleMultiSelect, name=self.title, max_height=self.height, values=self.options, scroll_exit=True)
    else:
        opt = F.add(np.TitleSelectOne, name=self.title, max_height=self.height, values=self.options, scroll_exit=True)
    F.edit()
    self._values = opt.get_selected_objects()
    self.result = ( self._values if self.multi and len(self._values) > 1 else self._values[0] )

def ChooseOption(title, oList, multi=False):

    pop = myPop()
    pop.setopt(title, oList, multi)
    pop.run()
    return pop.result

# Show a popup with radiobuttons to select 1 item from a list
print ChooseOption('choose a single element', ['a','b','c','d'])

# Show a popup with radiobuttons to multi-select items from a list
print ChooseOption('choose multi-elements', ['a','b','c','d'], True)

希望这能有所帮助。Enrico

票数 1
EN

Stack Overflow用户

发布于 2015-07-10 21:49:27

因为npyscreen就是为了让这类事情变得非常简单而写的,所以我会使用npyscreen。:)

example code here几乎就是您所要求的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31338920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档