【问题标题】:Python - notify user every time a loop yields an output Tkinter?Python - 每次循环产生输出Tkinter时通知用户?
【发布时间】:2020-04-19 20:43:49
【问题描述】:

我每 5 分钟接收一次 API 数据并运行 Python 代码来检查传入数据是否满足某些条件。数据采用 JSON 格式,但我将其转换为数据框并在那里执行我的检查。 如果其中一项检查产生命中,我想得到通知。我想找到一种快速且节省资源的方式让 Python 通知我。

  • 我想我不能使用 "print()",因为我不会一直看 Python。
  • 我可以使用 "data.to_excel",但我仍然需要打开文件夹窗口并手动检查是否出现新的 excel 文件。
  • 我读到 Tkinter 被广泛用于生成新窗口,所以我想这就是要走的路。

生成带有一行文本的窗口(最好是一个出现时带有声音)的最有效(简约)代码是什么? "条件 1/2/3/4 满足,时间戳,字符串"

感谢您的热心帮助

【问题讨论】:

    标签: python audio tkinter window memory-efficient


    【解决方案1】:

    您可以做一些比这更简单的事情来帮助您在收到东西时通知您。您可以使用 os 库在打印到文件时打开文件。假设您使用 data.to_excel。之后,您可以打开它。 为此,您只需导入 os,函数为 os.system(path_of_excel_file)。在路径中,您必须小心并为空格或其他特殊字符使用反斜杠。

    【讨论】:

    • 我忘了解决声音部分。为此,您可以打印 '\a' 字符,这将发出铃声。如果它不起作用,则意味着您必须在终端中启用它,但我从未遇到过这个问题。只是听别人说的。
    • 谢谢!我使用 winsound.Beep() 因为打印不起作用。 WRT 导出,导出到 xlsx 或 csv 或 txt 会更快吗? @GhostyFrosty
    • 一切都一样快。您可以像使用文本文件一样使用它们中的每一个。也就是说,如果您的 txt 文件被格式化为 csv(每个值用一个逗号分隔),您可以像 txt、csv 或 excel 一样轻松打开它,而不会遇到任何麻烦,并且它将被完美地解释。如果你让你的操作系统用 excel 打开所有的 .csv 文件,它会很好地工作并且没有性能问题。这完全取决于谁打开文件,所以这是您的偏好。对我来说,至少我可以用记事本和 excel 打开 csv,没有任何问题@Dave
    【解决方案2】:

    使用messagebox 可能非常容易。一个最小的例子:

    from tkinter import messagebox
    import time
    import tkinter as tk
    
    root = tk.Tk()
    info = "what"
    root.withdraw()
    if condition:
        messagebox.showinfo("title",f"Condition-1 fulfilled time:{time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime())} \n info:{info}")
    

    如果条件为True,则会显示一个小窗口(播放默认系统声音,无需使用winsound.Beep())。

    【讨论】:

      猜你喜欢
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多