TypeError:setCurrentWindow():第一个arg无法强制转换为ij.gui.ImageWindow

时间:2016-09-20 17:18:41

标签: jython imagej

嗨,我是一个非常新手的脚本。我正在尝试编写一个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]) 

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该图像现在是活动图像...但它实际上不会提升窗口,这就是您想要的窗口。