在Python中返回特定类型

在Python中返回特定类型,python,Python,快速版本: 我试图找出如何将列表或元组从一个脚本中的函数传递到另一个脚本中的函数。我遇到的问题是,在第二个脚本中,它总是变成一个NoneObjectType,然后除了将它打印为一个长字符串外,我无法对它执行任何操作 长版本: 我使用一个名为Poser的3d程序,它允许使用Python自动匹配任务。因此,我制作了一个名为SelectMultiple的小脚本,它为我提供了一个很好的wxPython窗口,我可以选择要修改的项目。因为我可以一遍又一遍地使用它,所以我希望它是自己的脚本 以下是我从Sele

快速版本: 我试图找出如何将列表或元组从一个脚本中的函数传递到另一个脚本中的函数。我遇到的问题是,在第二个脚本中,它总是变成一个NoneObjectType,然后除了将它打印为一个长字符串外,我无法对它执行任何操作

长版本: 我使用一个名为Poser的3d程序,它允许使用Python自动匹配任务。因此,我制作了一个名为SelectMultiple的小脚本,它为我提供了一个很好的wxPython窗口,我可以选择要修改的项目。因为我可以一遍又一遍地使用它,所以我希望它是自己的脚本

以下是我从SelectMultiple调用的函数:

def MyApp():
    title = "Select from list"
    # Make the selection window pop up
    mydialog = userInput(title, lst)
    popupwindow = mydialog.ShowModal()

    # If the user cancels win = 0
    if popupwindow == wx.ID_CANCEL:
        print "User canceled"
        return

    # Get the selected actors
    selected = mydialog.GetSelectedActors()

    # We are finished with the dialog
    mydialog.Destroy()

    return lst(selected)
默认情况下,selected是一个元组,正如您所看到的,在返回它之前,我尝试将其转换为列表,但在我的另一个脚本中没有以这种方式显示。文件确实导入了,我可以打印它并得到一个显示内容的字符串,但是它总是非类型的,我不能用它做很多事情。以下是我打电话的脚本:

import poser
import os

scene = poser.Scene()

pathname = os.path.split(poser.AppLocation())[0]
pathname = os.path.join(pathname, 'Runtime', 'Python', 'poserScripts', 'ScriptsMenu', 'GadgetGirl')
sys.path.append(pathname)

try:
    import SelectMultiple
except:
    print "Could not import SelectMultiple script"

    def ChoiceWindow():
        title = "SuperFly Node Fixer"
        message = "Choose the operation to preform"
        list_of_operations = ["Delete Node", "Detach Node", "Re-Link Node"]

        drop_down_window = poser.DialogSimple.AskMenu(title, message, list_of_operations)
        return drop_down_window


    def Controller():
       script_to_run = ChoiceWindow()
       #Need to call multiple so that we can know on what figures
       list_of_figures = SelectMultiple.MyApp()
       print type(list_of_figures)

Controller()

所以,是的,我如何取回非类型以外的内容。

循环通过
选定的
元组,并将项目添加到列表中

l = list()    
for item in selected:
    l.append(item)
    return l

另外,我不确定您使用的是哪一版本的Python,但是列表的类型转换是
list()
而不是
lst()

,因此我用一个打字错误创建了自己的问题。当我发现selected不是一个列表而是一个元组后,我错误地将列表转换为lst,然后无法理解为什么它不是一个列表。感谢您的帮助

您是否打算偶然键入
list(selected)
而不是
lst(selected)
?如果需要,还需要显示
mydialog.GetSelectedActors()
的最小示例。您是否100%确定执行了
return lst(selected)
?如果您的脚本输入了
如果popupwindow==wx.ID\u CANCEL:
条件,则将执行
返回
,返回值将为
。您的意思是
lst
而不是
列表
?在返回值之前,请尝试打印该值。听起来问题出在
userInput
返回的对象中。所以是的,我的意思是list而不是lst。现在的问题可能是我的列表是空的,因为它在我准备好返回之前就返回了。谢谢你的帮助