从列表框中选定的项目中提取内容 (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) 的相关文章

  • 是否有解决方法可以通过 CoinGecko API 安全检查?

    我在工作中运行我的代码 一切都很顺利 但在不同的网络 家庭 WiFi 上 我不断收到403访问时出错CoinGecko V3 API https www coingecko com api documentations v3 可以观察到 在
  • 与区域指示符字符类匹配的 python 正则表达式

    我在 Mac 上使用 python 2 7 10 表情符号中的标志由一对表示区域指示符号 https en wikipedia org wiki Regional Indicator Symbol 我想编写一个 python 正则表达式来在
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 使用 kivy textinput 的 'input_type' 属性的问题

    您好 我在使用 kivy 的文本输入小部件的 input type 属性时遇到问题 问题是我制作了两个自定义文本输入 其中一个称为 StrText 其中设置了 input type text 然后是第二个文本输入 名为 NumText 其
  • CLI/C++:void* 到 System::Object

    这是一个类似的问题这个帖子 https stackoverflow com questions 1154929 void to object in c cli 我一直无法用它来解决我的问题 我在这里包含了一些代码 希望能帮助某人了解其他帖子
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • 使用 xlrd 打开 BytesIO (xlsx)

    我正在使用 Django 需要读取上传的 xlsx 文件的工作表和单元格 使用 xlrd 应该可以 但因为文件必须保留在内存中并且可能不会保存到我不知道如何继续的位置 本例中的起点是一个带有上传输入和提交按钮的网页 提交后 文件被捕获req
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • Python beautifulsoup 仅限 1 级文本

    我看过其他 beautifulsoup 得到相同级别类型的问题 看来我的有点不同 这是网站 我正试图拿到右边那张桌子 请注意表的第一行如何展开为该数据的详细细分 我不想要那个数据 我只想要最顶层的数据 您还可以看到其他行也可以展开 但在本例
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • pip 列出活动 virtualenv 中的全局包

    将 pip 从 1 4 x 升级到 1 5 后pip freeze输出我的全局安装 系统 软件包的列表 而不是我的 virtualenv 中安装的软件包的列表 我尝试再次降级到 1 4 但这并不能解决我的问题 这有点类似于这个问题 http
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date

随机推荐

  • 没有 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