嗨,我是一个非常新手的脚本。我正在尝试编写一个Jython脚本,它将在imageJ中拍摄不在前面的图像,并将其带到前面。我尝试过使用WindowManager但是经常遇到类似的错误。
TypeError:setCurrentWindow():第一个arg无法被强制转换 ij.gui.ImageWindow
或此错误的其他形式。似乎激活不在前面的图像不应该太困难。
以下是我使用的代码:
from ij import IJ
from ij import WindowManager as WM
titles = WM.getIDList()
WM.setCurrentWindow(titles[:1])
答案 0 :(得分:1)
\u001ag,\u001ae\u001c#r\u0014Z
方法需要WindowManager.setCurrentWindow
个对象,而不是ImageWindow
图片ID。但您可以按如下方式查找给定ID的int
:
ImageWindow
以下是您的代码的工作版本:
WM.getImage(imageID).getWindow()
from ij import IJ
from ij import WindowManager as WM
print("[BEFORE] Active image is: " + IJ.getImage().toString())
ids = WM.getIDList()
win = WM.getImage(ids[-1]).getWindow()
WM.setCurrentWindow(win)
win.toFront()
print("[AFTER] Active image is: " + IJ.getImage().toString())
变量重命名为titles
,因为方法ids
会返回WindowManager.getIDList()
图片ID列表,不 int
列表{1}}图片标题。String
方法需要WM.getImage(int imageID)
,而不是列表。所以我使用int
,它是ids[-1]
列表的最后一个元素,而不是ids
,这是一个子数组。当然,您可以传递任何您想要的图像ID。ids[:1]
,实际上将窗口置于前面。调用win.toFront()
非常重要,因为它告诉ImageJ该图像现在是活动图像...但它实际上不会提升窗口,这就是您想要的窗口。