【问题标题】:Function returning nothing [closed]函数不返回任何内容[关闭]
【发布时间】:2022-01-12 08:44:31
【问题描述】:

我正在使用 tkinter 创建一个桌面应用程序,该应用程序稍后将 OpenCV 用于某些任务。我正在尝试创建一个读取文件路径并将该路径作为字符串返回的函数。它返回<function UploadAction at 0x00000246B6A42E50>,我有一个print() 来验证askopenfilename 是否正确打印了路径并且它是正确的。那么我在这里忽略/不看什么?代码如下:

def UploadAction():
    file = filedialog.askopenfilename()
    print(file)
    return file

mystr= UploadAction
img= cv.imread('{}'.format(mystr)) 

def Image(event=None):
    #cv.imshow('img', img)
    #cv.waitKey(0)
    #cv.destroyAllWindows()
    print(mystr)
    print(UploadAction)

函数通过按钮调用,它们工作正常。提前致谢。

【问题讨论】:

  • 看来要实现回调
  • 看来您需要了解更多关于 tkinter 的信息。您的代码没有实际使用它,但您希望事情会发生吗?

标签: python opencv tkinter


【解决方案1】:

你需要Parenthesis(),否则函数不会被调用-

mystr= UploadAction()

另外,这个 - img= cv.imread('{}'.format(mystr)) 可以简化 -

img= cv.imread(mystr)

【讨论】:

  • 我不想调用该函数,我想将返回的值存储为一个字符串,这样我就可以将该字符串复制到imread 函数中。这些函数是通过我的应用程序中的按钮调用的。
  • 如果不调用,怎么获取返回值呢?另外,请告诉我如果你运行我的代码会发生什么?
  • img= cv.imread('mystr') 应改为 img= cv.imread(mystr)
  • @acw1668,哦,是的。对不起这是我的错。修好了。
【解决方案2】:

您需要括号才能调用“UploadAction”。

如果你不放括号,你将存储一个指向函数的指针,而不是执行UploadAction并将返回值设置到mystr中。

mystr = UploadAction()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 2017-06-23
    • 2016-08-10
    • 2020-01-10
    相关资源
    最近更新 更多