从列表框中选定的项目中提取内容 (urwid)

2024-02-29

我正在 urwid 中创建一个列表框,其中每个项目都是从 URL 列表中提取的 URL。当选择一个项目并单击 ENTER 时,我想提取 URL 并在浏览器中打开它。到目前为止,这是我的代码:

class SelectableText(urwid.Text):
    def selectable(self):
        return True

    def keypress(self, size, key):
        return key

def handle_input(input):
    if input == "": # Open link
        focus_widget, idx = content_container.get_focus()
        # TODO: Open link from focus_widget
    elif input in ('q', 'Q'): # Quit
        raise urwid.ExitMainLoop()

palette = [
  ('menu', 'black', 'dark cyan', 'standout'),
  ('reveal focus', 'black', 'dark cyan', 'standout')]
menu = urwid.Text([
    u'\n',
    ('menu', u' ENTER '), ('light gray', u" Open link "),
    ('menu', u' Q '), ('light gray', u" Quit"),
])

list_of_urls = ["http://thisisalink.com/", ...]
items = list(map(lambda url: urwid.AttrMap(SelectableText(url), None, "reveal focus"), list_of_urls))
content = urwid.SimpleListWalker(items)
content_container = urwid.ListBox(content)

layout = urwid.Frame(body=content_container, footer=menu)

main_loop = urwid.MainLoop(layout, palette, unhandled_input=handle_input)
main_loop.run()

问题在于handle_input(input)。如何从结果中提取实际的 URLcontent_container.get_focus()?


In focus_widget您有 AttrMap 对象包装文本小部件。

您可以从以下位置获取文本内容urwid.Text http://urwid.org/reference/widget.html#urwid.Text.text小部件与.text http://urwid.org/reference/widget.html#urwid.Text.text属性,你可以得到由一个包裹的小部件urwid.AttrMap http://urwid.org/reference/widget.html#urwid.AttrMap.base_widget http://urwid.org/reference/widget.html#urwid.Widget.base_widget属性。

另请注意,您需要检查输入是否等于enter, 检查 Enter 键

def handle_input(input):
    if input == "enter": # Open link
        focus_widget, idx = content_container.get_focus()
        url = focus_widget.base_widget.text
        import webbrowser
        webbrowser.open(url)
    elif input in ('q', 'Q'): # Quit
        raise urwid.ExitMainLoop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从列表框中选定的项目中提取内容 (urwid) 的相关文章

随机推荐

  • 没有 async void 的即发即忘

    我有三种方法 其中第一个结果将在接下来的两个方法中使用 并且预计不会返回任何数据 result await DataAccess Query param Query await DataAccess Create result await
  • 关于 Oracle 12c 中的用户

    我的系统上安装了 Oracle 12c 数据库 我有一个需要访问数据库的应用程序 以前在Oracle 11g中 我使用以下命令来创建用户 create user name identified by name grant connect c
  • 使用 HealthKit 后台传递检索步骤后,在后台将数据写入 Firebase

    我有一个HKObserverQuery设置在后台获取步骤 enableBackgroundDelivery方法被调用在application didFinishLaunchingWithOptions 这些步骤是在后台检索的 但我还想将检索
  • MVC 的替代方案是什么?

    似乎我正在进行的每个项目都使用模型视图控制器架构 这就是我滚动自己的项目的方式 还有其他选择吗 否则如何创建一个具有持久存储和用户界面的应用程序呢 MVC http en wikipedia org wiki Model view cont
  • 有没有办法在没有扩展名的情况下从express提供静态html文件?

    我想提供一个 html 文件而不指定它的扩展名 有什么办法可以在不定义路线的情况下做到这一点吗 例如代替 helloworld html 我想做的就是 helloworld 您可以在express static方法中使用扩展选项 app u
  • WinForms:加载本地化帮助 (chm) 文件

    加载特定于区域设置 即已翻译 的已编译帮助文件 chm 的最佳方法是什么 我们的安装会将它们与包含资源的卫星程序集一起部署 我想重复使用 NET 框架用于加载卫星程序集的相同探测规则 并且我绝对希望避免编写自己的搜索算法 因为例如 我必须处
  • 如何在Eclipse中浏览包含源代码的jar文件中的源代码?

    我有一个包含源代码的 jar 文件 如何在 Eclipse 中浏览该源代码 目前 我的 Eclipse 在文本编辑器中打开 jar 文件 但它并没有那么有用 当我查看首选项 常规 gt 编辑器 gt 文件关联 时 我没有关联 jar如果我查
  • INSERT INTO 失败且没有错误

    我正在尝试使用 PHP 和 Mysql 进行 INSERT INTO 这是 SQL 语句 在 PHPMyadmin 中成功 INSERT INTO purchase orders VALUES DEFAULT 501 80999 14917
  • 使用带参数的访问查询导出为文本

    问候 我有一个访问查询 它使用内置参数 例如 开始日期 来提示用户在运行查询时输入日期参数 在大多数情况下 这工作得很好 但今天我尝试将查询导出到文本文件 但收到错误 参数太少 预计2 这是有道理的 因为查询 开始日期 和 停止日期 中有两
  • 避免 Django def post 在保存时重复

    您好 我在保存时遇到重复对象的问题 我怎样才能防止这种情况发生 提前致谢 models py class Candidate models Model user models OneToOneField User primary key T
  • 如果每个条件都做 Rails

    您好 我需要打印出 active 为 0 的候选者 这是我在视图中的代码 如果 active 是或否 我可以打印 但是在每个 do 循环中 我只想打印活动候选者 So how can i add the condition to my ea
  • MVC5 - 如何在 DropDownListFor Html 帮助器中设置“selectedValue”

    正如问题所说 如何在 DropDownListFor Html 帮助器中设置 selectedValue 尝试了大多数其他解决方案 但没有一个有效 这就是我提出一个新问题的原因 这些都没有帮助 Html DropDownListFor m
  • 使用Webview在iPhone中查看.doc、.docx、.rtf、.ppt文件

    我想在 iPhone 中查看 doc docx rtf ppt 文件 但我猜我这边出了问题 它不适用于上述格式 但我的代码对于 txt 和 pdf 文件工作正常 我已阅读有关 Webview 的文档 它指出它支持查看上述文档 下面是我的 d
  • 在 R 中执行行之间的计算

    我试图弄清楚如何跨行 或行之间 进行计算 我尝试过查找此内容 但显然我的 Google Fu 今天并不强大 因为我只是找不到正确的搜索词 这是我要处理的数据类型的超级简化示例 mydf lt data frame pair rep 1 2
  • Linkedin API 用户分享统计

    也许我错过了有关 LinkedIn API 端点的一些信息 但在我看来 Linkedin API 没有端点 URL个人资料 墙 发布的帖子统计 喜欢 评论 甚至有机搜索统计数据 展示次数 点击次数 参与度 这很奇怪 因为公司 API 对于其
  • 连接被拒绝! selenium 服务器是否在边缘启动了 nightwatch

    我已经创建了一个项目 它是一个 vue js 应用程序 有一小部分单元测试 玩笑 和一个端到端测试 夜更 当我尝试使用 npm 运行端到端测试时 我得到 Error retrieving a new session from the sel
  • 在Delphi中使用接口有哪些优点和缺点?

    我已经使用 Delphi 类有一段时间了 但从未真正开始使用接口 我已经读过一些关于它们的内容 但想了解更多 我想听听您在使用 Delphi 中的接口时遇到的优点和缺点 包括编码 性能 可维护性 代码清晰度 层分离以及一般而言您能想到的任何
  • 浏览器兼容自动换行和空格:pre?

    我需要保留并换行 div 中的文本 到目前为止 我很难找到解决方案 我找到的最佳解决方案并不适用于所有浏览器 以下内容适用于 Chrome 和 IE6 但在 Firefox 中文本不换行 white space pre word wrap
  • Spring可缓存异步更新,同时返回旧缓存

    有休息控制器 它调用 Cacheable方法来自 Service My CacheManager has expireAfterWrite超时 所以超时后使用rest gt service方法时 必须重写缓存 但问题是 如果同时有许多剩余调
  • 从列表框中选定的项目中提取内容 (urwid)

    我正在 urwid 中创建一个列表框 其中每个项目都是从 URL 列表中提取的 URL 当选择一个项目并单击 ENTER 时 我想提取 URL 并在浏览器中打开它 到目前为止 这是我的代码 class SelectableText urwi