tray点击
parent
e5642a10ac
commit
2b0afc5d1b
28
main.py
28
main.py
|
@ -7,13 +7,6 @@ gi.require_version("WebKit2", "4.1")
|
|||
|
||||
from gi.repository import Gtk, WebKit2
|
||||
|
||||
# 优先尝试使用指示器, 没有再使用 Gtk.StatusIcon
|
||||
try:
|
||||
gi.require_version('AyatanaAppIndicator3', '0.1')
|
||||
from gi.repository import AyatanaAppIndicator3 as AppIndicator3
|
||||
except (ValueError, ImportError):
|
||||
AppIndicator3 = None
|
||||
|
||||
|
||||
class WebKitWindow(Gtk.Window):
|
||||
def __init__(self):
|
||||
|
@ -60,18 +53,23 @@ class WebKitWindow(Gtk.Window):
|
|||
|
||||
|
||||
def create_tray(self):
|
||||
if AppIndicator3 :
|
||||
indicator = AppIndicator3.Indicator.new(
|
||||
"youtube",
|
||||
"youtube",
|
||||
AppIndicator3.IndicatorCategory.APPLICATION_STATUS
|
||||
)
|
||||
else:
|
||||
indicator = Gtk.StatusIcon.new_from_icon_name('youtube')
|
||||
indicator = Gtk.StatusIcon.new_from_icon_name('youtube')
|
||||
|
||||
indicator.connect('activate', self.toggle_visible)
|
||||
return indicator
|
||||
|
||||
|
||||
def toggle_visible(self, icon):
|
||||
# trayIcon
|
||||
print(icon)
|
||||
|
||||
if self.is_active():
|
||||
self.hide()
|
||||
else:
|
||||
self.present()
|
||||
|
||||
|
||||
|
||||
def file_path(self, filepath):
|
||||
root = os.path.dirname(os.path.realpath(__file__))
|
||||
return os.path.join(root, filepath)
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
|
||||
|
||||
import gi, platform
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
|
||||
from gi.repository import Gtk
|
||||
from gi.repository.GdkPixbuf import Pixbuf
|
||||
|
||||
# 优先尝试使用指示器, 没有再使用 Gtk.StatusIcon
|
||||
try:
|
||||
gi.require_version('AyatanaAppIndicator3', '0.1')
|
||||
from gi.repository import AyatanaAppIndicator3 as AppIndicator3
|
||||
except (ValueError, ImportError):
|
||||
AppIndicator3 = None
|
||||
|
||||
# 是否 widnows
|
||||
def is_windows():
|
||||
return platform.system() in ('Windows', 'Microsoft')
|
||||
|
||||
# 文件要绝对路径
|
||||
def get_pixbuf(filename: str, size: int = 0) -> Pixbuf:
|
||||
|
||||
if size:
|
||||
pixbuf = Pixbuf.new_from_file_at_size(filename, size, size)
|
||||
else:
|
||||
pixbuf = Pixbuf.new_from_file(filename)
|
||||
|
||||
return pixbuf
|
||||
|
||||
|
||||
# 获取logo图标
|
||||
def get_logo(size):
|
||||
filename = 'youtube.svg'
|
||||
# windows要用png格式
|
||||
if is_windows():
|
||||
filename = 'youtube.png'
|
||||
|
||||
return get_pixbuf(filename, size)
|
||||
|
||||
|
||||
def create_tray():
|
||||
if AppIndicator3 :
|
||||
indicator = AppIndicator3.Indicator.new(
|
||||
"youtube",
|
||||
"youtube",
|
||||
AppIndicator3.IndicatorCategory.APPLICATION_STATUS
|
||||
)
|
||||
else:
|
||||
# windows 和 macos 必须传二进制图标, linux可传图标名称(自会去主题中找)
|
||||
indicator = Gtk.StatusIcon.new_from_pixbuf(get_logo(32))
|
||||
# linux
|
||||
indicator = Gtk.StatusIcon.new_from_icon_name('youtube')
|
||||
|
||||
return indicator
|
Reference in New Issue