- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚发现了 tomate:https://gitorious.org/tomate一个非常简单的程序,可帮助您在计算机上工作时完成工作。
但是 tomate 使用 gtk.status_icon 而不是 appindicator 所以我想解决这个问题。
但是,我想与 appindicator 保持相同的行为。
像这样使用非常容易,我不想创建菜单并将其使用复杂化。
简单的行为是,当您单击该图标时,您将启动计时器,而当您再次单击时,您将停止计时。
所以你不需要菜单。
是否可以在没有菜单的情况下使用 appindicator 或使用仅接收点击而没有任何项目的基本菜单?
谢谢你的帮助。
最佳答案
实际上,菜单使 appindicator 如此不同。
所以基本上,我只是创建了一个菜单并改变了我更新菜单和图标的方式。
diff -r 13c201b1030a tomate.py
--- a/tomate.py Fri May 13 19:48:31 2011 +0200
+++ b/tomate.py Wed May 18 09:26:43 2011 +0200
@@ -1,53 +1,79 @@
#!/usr/bin/env python
from __future__ import division
import pygtk
pygtk.require('2.0')
import gtk
import os
from time import time
from math import floor
gtk.gdk.threads_init()
import gobject
+import appindicator
#Parameters
MIN_WORK_TIME = 60 * 10 # min work time in seconds
class Pomodoro:
def __init__(self):
- self.icon=gtk.status_icon_new_from_file(self.icon_directory()+"idle.png")
- self.icon.set_tooltip("Idle")
+ self.ind = appindicator.Indicator("tomate","tomate",
+ appindicator.CATEGORY_APPLICATION_STATUS)
+
+ self.ind.set_status (appindicator.STATUS_ACTIVE)
+ self.ind.set_icon(self.icon_directory()+"idle.png")
self.state = "idle"
self.tick_interval=10 #number of seconds between each poll
- self.icon.connect('activate',self.icon_click)
- self.icon.set_visible(True)
self.start_working_time = 0
+ self.menu = gtk.Menu()
+ # Tooltip item
+ self.item = gtk.MenuItem('Idle')
+ self.item.connect("activate", self.icon_click, None)
+ self.item.show()
+ self.menu.append(self.item)
+ # A separator
+ separator = gtk.SeparatorMenuItem()
+ separator.show()
+ self.menu.append(separator)
+ # A quit item
+ item = gtk.MenuItem('Quit')
+ item.connect("activate", gtk.main_quit, None)
+ item.show()
+ self.menu.append(item)
+ self.menu.show_all()
+ self.ind.set_menu(self.menu)
def format_time(self,seconds):
minutes = floor(seconds / 60)
if minutes > 1:
return "%d minutes" % minutes
else:
- return "%d minute" % minutes
def set_state(self,state):
old_state=self.state
- self.icon.set_from_file(self.icon_directory()+state+".png")
+ self.ind.set_icon(self.icon_directory()+state+".png")
if state == "idle":
delta = time() - self.start_working_time
if old_state == "ok":
- self.icon.set_tooltip("Good! Worked for %s." %
+ self.item.get_child().set_text("Good! Worked for %s." %
self.format_time(delta))
elif old_state == "working":
- self.icon.set_tooltip("Not good: worked for only %s." %
+ self.item.get_child().set_text("Not good: worked for only %s." %
self.format_time(delta))
else:
if state == "working":
self.start_working_time = time()
delta = time() - self.start_working_time
- self.icon.set_tooltip("Working for %s..." % self.format_time(delta))
+ self.item.get_child().set_text("Working for %s..." % self.format_time(delta))
self.state=state
def icon_directory(self):
return os.path.dirname(os.path.realpath(__file__)) + os.path.sep
- def icon_click(self,dummy):
+ def icon_click(self, *args):
delta = time() - self.start_working_time
if self.state == "idle":
self.set_state("working")
@@ -59,7 +85,7 @@
if self.state == "idle":
pass
else:
- self.icon.set_tooltip("Working for %s..." % self.format_time(delta))
+ self.item.get_child().set_text("Working for %s..." % self.format_time(delta))
if self.state == "working":
if delta > MIN_WORK_TIME:
self.set_state("ok")
关于gtk - 使 tomate Unity 兼容的 Python AppIndicator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034323/
我有一个简单的 Python 代码,它使用 AppIndicator3 创建 Linux 托盘指示器。来自 GI .这很好用。但我想检测并处理简单的用户点击或双击此托盘图标。 据我所知,例如 Tele
我尝试使用 pygtk 模块在 Ubuntu 17.10 的顶部栏中制作一个应用程序指示器。 通过一些研究,我成功地制作了一个菜单,您可以在其中暂停主线程(当前仅将“更新”打印到控制台。) 现在我遇到
我刚刚开始进行 Mono-GTK 应用程序开发。我想在系统托盘中设置一个 appindicator 图标。但是 C# 返回命名空间丢失。 代码:使用 AppIndicator; 返回错误:找不到 na
这是一个 AppIndicator 的最小示例: #!/usr/bin/python import gobject import gtk import appindicator if __name__
我使用以下代码构建了一个带有菜单的应用程序指示器: self.ind = appindicator.Indicator("my-indicator", "indicator-messages",
我用 python 编写了 openweathermap 站点应用程序,但我只需要在没有图标的指示器中使用文本标签。但是当我离开“”时,然后显示空图标。为什么,我只需要文字。在 Ubuntu 12.0
我刚刚发现了 tomate:https://gitorious.org/tomate一个非常简单的程序,可帮助您在计算机上工作时完成工作。 但是 tomate 使用 gtk.status_icon 而
Appindicator 在 Ubuntu 13.10 上不可用? jason@jz:~$ python Python 2.7.5+ (default, Sep 19 2013, 13:48:49)
我正在尝试将 slider 添加到类似于声音菜单的 AppIndicator 中。 我查看了声音菜单的代码,发现我应该使用 libido-0.1。 这是我到目前为止所拥有的: indicator_me
我有一个 App Indicator 项目,它创建一个动态构建的启动菜单。 启动菜单通过 fork/exec 运行应用程序。我需要销毁 fork 子项中的应用程序指示器,或者以某种方式让它释放所有句柄
我尝试在 Ubuntu 上创建指标。 以下代码适用于 Ubuntu 18,但不适用于 Ubuntu 20。 void TestApplication(GtkApplication* app, gpoi
我是一名优秀的程序员,十分优秀!