tkinter로 작업 트레이에 상주하고 싶은 거기 당신. 포기하고 wxPython으로 행복해지자.
개요
뭐 tkinter에 고집했던 것은 나입니다만.
패키지를 추가하고 싶지 않다는 이유로 tkinter를 고집해 태스크 트레이에 상주시키는 방법을 찾고 있었습니다만, 아무래도 무리할 것 같았기 때문에 wxPython을 사용해 보았더니 아담하게 잘 되었습니다.
아직 tkinter로 만들지 않았다면 바삭 바삭 바꾸는 것이 좋습니다.
환경
Windows7 64bit
파이썬 3.6.5
wxPython==4.0.2
준비
패키지 설치
pip install wxPython
실제 데이터
폴더 구성
root/
├ gui.py
├ main.py
├ logo.ico # 이번에는 google의 G 마크로했습니다.
코드
먹다. py
import wx
import wx.adv
TRAY_TOOLTIP = 'test app'
TRAY_ICON = 'logo.ico'
def create_menu_item(menu, label, func):
item = wx.MenuItem(menu, -1, label)
menu.Bind(wx.EVT_MENU, func, id=item.GetId())
menu.AppendItem(item)
return item
def open_site():
print("open site.")
pass
# import webbrowser
# webbrowser.open_new(r"https://www.google.com/")
class TaskBarIcon(wx.adv.TaskBarIcon):
def __init__(self, frame):
self.frame = frame
super(TaskBarIcon, self).__init__()
self.set_icon(TRAY_ICON)
self.Bind(wx.adv.EVT_TASKBAR_LEFT_DCLICK, self.on_open_site)
def CreatePopupMenu(self):
menu = wx.Menu()
create_menu_item(menu, 'Open Site', self.on_open_site)
menu.AppendSeparator()
create_menu_item(menu, 'Exit', self.on_exit)
return menu
def set_icon(self, path):
icon = wx.Icon(wx.Bitmap(path))
self.SetIcon(icon, TRAY_TOOLTIP)
def on_open_site(self, event):
open_site()
def on_exit(self, event):
print('exit')
wx.CallAfter(self.Destroy)
self.frame.Close()
class App(wx.App):
def OnInit(self):
frame=wx.Frame(None)
self.SetTopWindow(frame)
TaskBarIcon(frame)
print('launch App')
return True
마인. py
if __name__ == "__main__":
import gui
app = gui.App(False)
app.MainLoop()
결과
여담
windows의 우하의 영역은 일본어로 태스크 트레이, 통지 영역, 혹은 영어에서는 system tray, task tray등이라고 불리기 때문에, 그 호칭 x 패키지의 수만큼 검색을 걸지 않으면 최적해를 얻을 수 없는 것은 꽤 힘들다.
참고
Reference
이 문제에 관하여(tkinter로 작업 트레이에 상주하고 싶은 거기 당신. 포기하고 wxPython으로 행복해지자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toriiico/items/0b26ef583e176eecce5d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Windows7 64bit
파이썬 3.6.5
wxPython==4.0.2
준비
패키지 설치
pip install wxPython
실제 데이터
폴더 구성
root/
├ gui.py
├ main.py
├ logo.ico # 이번에는 google의 G 마크로했습니다.
코드
먹다. py
import wx
import wx.adv
TRAY_TOOLTIP = 'test app'
TRAY_ICON = 'logo.ico'
def create_menu_item(menu, label, func):
item = wx.MenuItem(menu, -1, label)
menu.Bind(wx.EVT_MENU, func, id=item.GetId())
menu.AppendItem(item)
return item
def open_site():
print("open site.")
pass
# import webbrowser
# webbrowser.open_new(r"https://www.google.com/")
class TaskBarIcon(wx.adv.TaskBarIcon):
def __init__(self, frame):
self.frame = frame
super(TaskBarIcon, self).__init__()
self.set_icon(TRAY_ICON)
self.Bind(wx.adv.EVT_TASKBAR_LEFT_DCLICK, self.on_open_site)
def CreatePopupMenu(self):
menu = wx.Menu()
create_menu_item(menu, 'Open Site', self.on_open_site)
menu.AppendSeparator()
create_menu_item(menu, 'Exit', self.on_exit)
return menu
def set_icon(self, path):
icon = wx.Icon(wx.Bitmap(path))
self.SetIcon(icon, TRAY_TOOLTIP)
def on_open_site(self, event):
open_site()
def on_exit(self, event):
print('exit')
wx.CallAfter(self.Destroy)
self.frame.Close()
class App(wx.App):
def OnInit(self):
frame=wx.Frame(None)
self.SetTopWindow(frame)
TaskBarIcon(frame)
print('launch App')
return True
마인. py
if __name__ == "__main__":
import gui
app = gui.App(False)
app.MainLoop()
결과
여담
windows의 우하의 영역은 일본어로 태스크 트레이, 통지 영역, 혹은 영어에서는 system tray, task tray등이라고 불리기 때문에, 그 호칭 x 패키지의 수만큼 검색을 걸지 않으면 최적해를 얻을 수 없는 것은 꽤 힘들다.
참고
Reference
이 문제에 관하여(tkinter로 작업 트레이에 상주하고 싶은 거기 당신. 포기하고 wxPython으로 행복해지자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toriiico/items/0b26ef583e176eecce5d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pip install wxPython
폴더 구성
root/
├ gui.py
├ main.py
├ logo.ico # 이번에는 google의 G 마크로했습니다.
코드
먹다. py
import wx
import wx.adv
TRAY_TOOLTIP = 'test app'
TRAY_ICON = 'logo.ico'
def create_menu_item(menu, label, func):
item = wx.MenuItem(menu, -1, label)
menu.Bind(wx.EVT_MENU, func, id=item.GetId())
menu.AppendItem(item)
return item
def open_site():
print("open site.")
pass
# import webbrowser
# webbrowser.open_new(r"https://www.google.com/")
class TaskBarIcon(wx.adv.TaskBarIcon):
def __init__(self, frame):
self.frame = frame
super(TaskBarIcon, self).__init__()
self.set_icon(TRAY_ICON)
self.Bind(wx.adv.EVT_TASKBAR_LEFT_DCLICK, self.on_open_site)
def CreatePopupMenu(self):
menu = wx.Menu()
create_menu_item(menu, 'Open Site', self.on_open_site)
menu.AppendSeparator()
create_menu_item(menu, 'Exit', self.on_exit)
return menu
def set_icon(self, path):
icon = wx.Icon(wx.Bitmap(path))
self.SetIcon(icon, TRAY_TOOLTIP)
def on_open_site(self, event):
open_site()
def on_exit(self, event):
print('exit')
wx.CallAfter(self.Destroy)
self.frame.Close()
class App(wx.App):
def OnInit(self):
frame=wx.Frame(None)
self.SetTopWindow(frame)
TaskBarIcon(frame)
print('launch App')
return True
마인. py
if __name__ == "__main__":
import gui
app = gui.App(False)
app.MainLoop()
결과
여담
windows의 우하의 영역은 일본어로 태스크 트레이, 통지 영역, 혹은 영어에서는 system tray, task tray등이라고 불리기 때문에, 그 호칭 x 패키지의 수만큼 검색을 걸지 않으면 최적해를 얻을 수 없는 것은 꽤 힘들다.
참고
Reference
이 문제에 관하여(tkinter로 작업 트레이에 상주하고 싶은 거기 당신. 포기하고 wxPython으로 행복해지자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toriiico/items/0b26ef583e176eecce5d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
windows의 우하의 영역은 일본어로 태스크 트레이, 통지 영역, 혹은 영어에서는 system tray, task tray등이라고 불리기 때문에, 그 호칭 x 패키지의 수만큼 검색을 걸지 않으면 최적해를 얻을 수 없는 것은 꽤 힘들다.
참고
Reference
이 문제에 관하여(tkinter로 작업 트레이에 상주하고 싶은 거기 당신. 포기하고 wxPython으로 행복해지자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toriiico/items/0b26ef583e176eecce5d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(tkinter로 작업 트레이에 상주하고 싶은 거기 당신. 포기하고 wxPython으로 행복해지자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/toriiico/items/0b26ef583e176eecce5d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)