【问题标题】:Argument of type "datetime" cannot be assigned to parameter "value" of type "str"\"datetime\" 类型的参数不能分配给 \"str\" 类型的参数 \"value\"
【发布时间】:2022-11-29 04:10:53
【问题描述】:

我目前正在从事 Python 和 SQL 项目。

我在那里构建了一个 GUI,它从用户输入中获取信息并将它们存储在本地的 MySQL 数据库中。

项目似乎工作得很好,但这里和那里有一些崩溃,但我正在尝试解决一些警告/错误。

这是我的代码

通过 cmets 注释了错误引发的行。

elif (x == "Learn Python The Hard Way"):
    self.book_id_var.set("Book Id: 2")
    self.book_title_var.set("Learn Python The Hard Way")
    self.book_author_var.set("Zde A. Sham")

    d1 = datetime.datetime.today()
    d2 = datetime.timedelta(days = 15)
    d3 = d1 + d2

    self.date_borrowed_var.set(d1) # Argument of type "datetime" cannot be assigned to parameter "value" of type "str" in function "set", "datetime" is incompatible with "str"

    self.date_due_var.set(d3) # Argument of type "datetime" cannot be assigned to parameter "value" of type "str" in function "set", "datetime" is incompatible with "str"

    self.days_on_book_var.set("15")
    self.late_return_fine_var.set("Rs.25")
    self.date_over_due_var.set("NO")
    self.final_price_var.set("Rs.725")

在第 10 行和第 13 行中,d1d3 抛出了注释的错误。不幸的是,我无法找到解决方案。

我做的研究

我是编程新手,所以我为解决此问题所做的唯一一件事就是在谷歌上搜索类似的项目/问题,但没有一个对我有帮助。

我可以忽略“datetime”与“str”不兼容吗?如果不能,有人可以帮我解决吗?

【问题讨论】:

  • 你能显示date_borrowed_vardate_due_var的定义(类型)吗?请 edit 你的问题,添加这些字段的定义并在此处用 set 说明你的意图。
  • 如果在设置之前将 d1 转换为 str 可以吗? self.date_borrowed_var.set(str(d1))
  • 也许您应该只添加 self 引用的完整类定义(包括所有字段)。这更像是minimal reproducible example

标签: python


【解决方案1】:

为了将 datetime 对象转换为字符串,您可以调用 datetime 包中内置的 .strftime 方法

例如利用:

d3.strftime("%d.%m.%y")

而不仅仅是

d3

同样适用于 d1 - ("%d.%m.%y") 表示您的日期时间的表示格式

编辑:结果看起来像这样

    self.date_borrowed_var.set(d1.strftime("%d.%m.%y"))
    self.date_due_var.set(d3.strftime("%d.%m.%y"))

【讨论】:

  • 尽管字符串格式化和强制转换可能是一种变通方法,但我怀疑这是否是一个有用的解决方案。首先让我们澄清一下,相关代码的真正意图是什么。例如,您确定目标字段期望的字符串表示形式吗?
猜你喜欢
  • 1970-01-01
  • 2020-08-28
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
  • 2019-10-30
  • 1970-01-01
相关资源
最近更新 更多