有没有办法将JMenuItem添加到JPanel,以便我可以创建一个按钮来显示多个选项,如地址栏下的firefox中的最新新闻按钮?
我只能将JMenu和JMenuItems添加到JMenuBar,JPopupMenu和其他JMenus和JMenuitems
有没有办法在Java Swing中创建一个下拉式Jbutton?(左侧带有向下箭头的那些向用户显示更多选项)
提前致谢
我试图将一个项添加到一个简单的PyQt示例的应用程序菜单栏.但是,以下代码似乎根本不会改变菜单栏.菜单中唯一的项目是"Python".下面是大部分代码,减去导入和实例化.
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(250, 150)
self.setWindowTitle('menubar')
self.modal = False
exit = QtGui.QAction( QtGui.QIcon('images/app_icon.png'), 'Exit', self )
exit.setShortcut('Ctrl+Q')
exit.setStatusTip('Exit application')
self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
menubar = self.menuBar()
file = menubar.addMenu('File')
file.addAction(exit)
Run Code Online (Sandbox Code Playgroud)
我也尝试创建一个新的QMenuBar并使用该setMenuBar()方法手动交换菜单栏.
上面代码片段中的任何明显错误?
我是QT编程的新手.我想创建一个简单的菜单栏,其中包含两个菜单和几个操作(FILE菜单有3个操作,VIEW菜单有一个操作).我有createMenus()方法,我创建那些菜单和操作然后我将创建的菜单添加到菜单栏,但是当我运行应用程序时,它没有显示这个菜单栏,我不知道为什么.谁能说出问题是什么?
MainWindow.cpp的源代码
#include <QtGui>
#include <QAction>
#include "MainWindow.h"
MainWindow::MainWindow() {
// Creeam fereastra principala
QWidget *window = new QWidget;
setCentralWidget(window);
// Creeam eticheta unde vom afisa titlul item-ului selectat
// Implicit va avea un titlu predefinit
infoLabel = new QLabel("Selectati un item va rog ");
createActions();
createMenus();
// Creeam un layout pentru pozitionarea etichetei
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(infoLabel);
window->setLayout(layout);
setWindowTitle("GUI");
setMinimumSize(300, 300);
resize(480,320);
}
void MainWindow::contextMenuEvent(QContextMenuEvent *event) {
QMenu menu(this);
menu.addAction(newAction);
menu.addAction(openAction);
menu.addAction(closeAction);
menu.addAction(preferencesAction);
menu.exec(event->globalPos());
}
void MainWindow::new_() …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个Mac OS菜单额外的应用程序,当用户按下某个热键时,该应用程序显示包含当前活动应用程序菜单栏项的上下文菜单.显示上下文菜单我可以做得很好,但我似乎无法获得当前活动的应用程序的菜单栏项.目前我正在使用[[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:]获取活动应用程序的名称,但NSRunningApplication似乎包含了很少的其他信息.有什么方法可以从外部应用程序获取有关应用程序菜单的信息吗?
更新:
使用ScriptingBridge框架似乎工作得相当好,如果你很高兴使用AppleScript:
SystemEventsApplication* sevApp = [SBApplication applicationWithBundleIdentifier:@"com.apple.systemevents"];
SystemEventsProcess* proc = [[sevApp applicationProcesses] objectWithName:appName];
for (SystemEventsMenuBar* menuBar in proc.menuBars) {
for (SystemEventsMenuBarItem* menuBaritem in menuBar.menuBarItems) {
NSLog(@"%@", menuBaritem.name);
}
}
Run Code Online (Sandbox Code Playgroud)
将打印出应用程序菜单栏中提供的菜单列表.还没有找到获取上下文菜单的方法,所以我暂不会回答这个问题...
我正在构建一个Mac应用程序,它只位于菜单栏中,没有停靠项,没有关键窗口,也没有主菜单(它LSUIElement位于info.plist中YES).当我第一次启动应用程序时applicationDidBecomeActive:,就像我预期的那样被调用.然而,一旦另一个应用程序获得焦点,applicationDidBecomeActive:永远不会再次调用.
这可以防止我的应用程序中的文本字段成为第一个响应者.当我第一次打开应用程序时,文本字段是可编辑的:

但是在另一个应用程序到达前台后,文本字段不可编辑:

打开菜单时,menuWillOpen:会在代理上调用NSMenu.我试过放下以下内容但没有成功:
[NSApp unhide];
[NSApp arrangeInFront:self];
[NSApp activateIgnoringOtherApps:YES];
[NSApp requestUserAttention:NSCriticalRequest];
[[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateIgnoringOtherApps];
[[NSRunningApplication currentApplication] unhide];
Run Code Online (Sandbox Code Playgroud)
我认为问题可能与没有任何窗户带到前面有关.我觉得我在这里抓住稻草.任何帮助将不胜感激.
如果我在OS X上创建一个tkinter菜单并尝试向其添加菜单按钮,则菜单中add_comand()不会显示任何内容.
如果下面的代码在Ubuntu上运行,我会得到一个带有两个标记为"红色"和"蓝色"的命令的菜单栏,它们会改变窗口的背景颜色.
在OS X 10.10.1(Yosemite)上,按钮不会出现.我知道我可以使用红色和蓝色命令制作一个下拉菜单,但在我的真实应用程序中,我宁愿不这样做.
from platform import python_version_tuple
major = python_version_tuple()[0]
if major == '3':
import tkinter as tk
else:
import Tkinter as tk
root = tk.Tk()
fr = tk.Frame(root, height = 200, width = 200)
fr.pack()
menu = tk.Menu(root)
root.configure(menu=menu)
menu.add_command(label='Red', command=lambda:fr.configure(bg='red'))
menu.add_command(label='Blue', command=lambda:fr.configure(bg='blue'))
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
你能告诉我怎么做我想要的吗?
在开发菜单栏应用程序时,我很难找到使应用程序看起来很好的首选方法.我原本以为Apple控件基本上会在很大程度上处理这个问题,但看起来并非如此.
确保菜单栏应用程序在明暗模式下看起来都很好的首选方法是什么?我是否缺少一些可以更轻松地实现此功能的控制功能,还是需要手动检测模式并适当地修改控件?
我有一个名为 Fen\xc3\xaatre 的应用程序,当使用命令查看进程名称时,top它给出了名称Fene?~Btre H。
我想单击其菜单栏项下名为“a.py”的项目,如图所示。
\n\n\n\n我的尝试:
\n\ntell application "System Events" to tell process "Fen\xc3\xaatre"\n tell menu bar item 1 of menu bar 1\n click\n click menu item "Show all" of menu 1\n end tell\nend tell\nRun Code Online (Sandbox Code Playgroud)\n\n错误:
\n\n$ osascript a.applescript \na.applescript:121:157: execution error: System Events got an error: Can\xe2\x80\x99t get menu item "Show all" of menu 1 of menu bar item 1 of menu bar 1 of process …Run Code Online (Sandbox Code Playgroud) 我正在为 macOS 开发 Qt 应用程序。
如何将项目添加到menuApp?我指的是出现在苹果图标右侧菜单栏上的条目。
我怎样才能在 Qt 中实现这一点?
我正在使用 Qt 5.9。Qt 小部件。
menuApp是 Apple 在每个应用程序中默认放置的菜单。在所附的图像中,它对应于一个显示“Finder”的菜单条目:
我正在使用 SwiftUI 的新 API 构建 macOS 菜单栏应用程序MenuBarExtra,但遇到了一些奇怪的问题。
我已经实现了一个设置窗口,可以通过以下调用打开该窗口:
if #available(macOS 13, *) {
NSApp.sendAction(Selector(("showSettingsWindow:")), to: nil, from: nil)
} else {
NSApp.sendAction(Selector(("showPreferencesWindow:")), to: nil, from: nil)
}
Run Code Online (Sandbox Code Playgroud)
我还将该Application is agent标志设置为YESin info 我的项目属性。
不幸的是,每当我通过菜单栏打开设置窗口时,它都会在后台打开并且根本不可见。我真的不知道如何从这里继续。我考虑过以下几点:
有没有人遇到过这个问题并实施了解决方案?
menubar ×10
macos ×7
cocoa ×2
objective-c ×2
python ×2
appkit ×1
applescript ×1
java ×1
menu ×1
menuitem ×1
osx-yosemite ×1
pyqt ×1
qt ×1
qt-creator ×1
qt4 ×1
qt5 ×1
rubymotion ×1
swiftui ×1
swing ×1
tkinter ×1