gpt4 book ai didi

python - NSMenuItem + Python + 动态变量

转载 作者:行者123 更新时间:2023-12-01 05:38:23 27 4
gpt4 key购买 nike

我正在尝试为其中的菜单项获取动态标签。我已经用 Python 编写了整个应用程序,但说实话,考虑到 NSMenuItem 的外观,我还不如用 Objc 重写它......

import objc
from Foundation import *
from AppKit import *
from PyObjCTools import AppHelper

class MyApp(NSApplication):

def finishLaunching(self):
# Make statusbar item
statusbar = NSStatusBar.systemStatusBar()
self.statusitem = statusbar.statusItemWithLength_(NSVariableStatusItemLength)
self.icon = NSImage.alloc().initByReferencingFile_('icon.png')
self.icon.setScalesWhenResized_(True)
self.icon.setSize_((20, 20))
self.statusitem.setImage_(self.icon)

#make the menu
self.menubarMenu = NSMenu.alloc().init()

self.menuItem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Click Me', 'clicked:', '')
self.menubarMenu.addItem_(self.menuItem)

self.quit = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Quit', 'terminate:', '')
self.menubarMenu.addItem_(self.quit)

#add menu to statusitem
self.statusitem.setMenu_(self.menubarMenu)
self.statusitem.setToolTip_('My App')

def clicked_(self, notification):
NSLog('clicked!')

if __name__ == "__main__":
app = MyApp.sharedApplication()
AppHelper.runEventLoop()

最佳答案

您尝试过setTitle_吗?

def clicked_(self, notification):
self.menuItem.setTitle_("Clicked!")

或者使用计时器:

def finishLaunching(self):
# ...

self.timer = NSTimer.alloc().initWithFireDate_interval_target_selector_userInfo_repeats_(NSDate.date(), 1.0, self, 'tick:', None, True)
NSRunLoop.currentRunLoop().addTimer_forMode_(self.timer, NSDefaultRunLoopMode)
self.timer.fire()


def tick_(self, arg):
self.menuItem.setTitle_("Tick %d!" % int(time.time()))

对于实时更新,您可能需要 JGMenuWindow (SO: How to update NSMenu while it's open?)

关于python - NSMenuItem + Python + 动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18291108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com