【问题标题】:Can't convert 'int' object to str implicitly error with code which previously workedCan't convert 'int' object to str 使用以前有效的代码隐式错误
【发布时间】:2017-09-02 06:10:18
【问题描述】:
self.itemCode.setText(str(getNumber()))

这会调用 getNumber() 来获取要添加到用户的下一个项目的项目 ID:

def getNumber():
    conn = sqlite3.connect('inventory.db')
    c = conn.cursor()
    c.execute('SELECT seq FROM sqlite_sequence')
    itemNumber = c.fetchone()[0]
    code = str(itemNumber + 1)
    return code

早些时候,我得到了它的工作。使用上面的代码......我不知道发生了什么,但现在它返回了。

Traceback (most recent call last):
  File "C:/Users/Lloyd/Desktop/Python Projects/stock/addItem.py", line 239, in <module>
    ui = Ui_Dialog()
  File "C:/Users/Lloyd/Desktop/Python Projects/stock/addItem.py", line 32, in __init__
    self.setupUi(self)
  File "C:/Users/Lloyd/Desktop/Python Projects/stock/addItem.py", line 176, in setupUi
    self.retranslateUi(Dialog)
  File "C:/Users/Lloyd/Desktop/Python Projects/stock/addItem.py", line 185, in retranslateUi
    self.itemCode.setText(str(getNumber()))
  File "C:/Users/Lloyd/Desktop/Python Projects/stock/addItem.py", line 26, in getNumber
    return itemNumber + 1

  TypeError: Can't convert 'int' object to str implicitly

【问题讨论】:

  • itemNumber 是字符串。
  • 你能打印什么是itemNumber
  • str(int(itemNumber) + 1).
  • 对不起。是的,它是一个整数! @KalyanReddy
  • 最有可能的情况是:python 突然在没有警告的情况下随意切换变量的类型,或者您误解了它在做什么或改变了其他东西?

标签: python string pyqt integer pyqt4


【解决方案1】:

我解决了。因此,基本上,您需要先将 itemNumber(这是我的 sqlite 数据库表中的序列号)转换为 int,然后再添加 1。

def getNumber():
    conn = sqlite3.connect('inventory.db')
    c = conn.cursor()
    c.execute('SELECT seq FROM sqlite_sequence')
    itemNumber = c.fetchone()[0]
    return int(itemNumber) + 1 #CHANGED THIS from "return str(itemNumber + 1)"

以前,它有效。我不知道发生了什么,但 Python 不再将 itemNumber 识别为 int。

【讨论】:

    【解决方案2】:

    你好 lloydyu24,

    试试这个代码,

    def getNumber():
        conn = sqlite3.connect('inventory.db')
        c = conn.cursor()
        c.execute('SELECT seq FROM sqlite_sequence')
        itemNumber = c.fetchone()[0]
        code = int(itemNumber) + 1
        return str(code)
    
    self.itemCode.setText(getNumber())
    

    希望我的回答对你有所帮助。 如有任何疑问,请发表评论。

    【讨论】:

      【解决方案3】:

      itemNumber 是一个字符串,所以在你的代码中:

      code = str(itemNumber + 1)
      

      您正在尝试将数字 (1) 添加到字符串 (itemNumber)。 首先,您应该将字符串转换为 int,然后将数字 (1) 添加到其中:

      code = str (int (itemNumber) + 1)

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2014-06-12
        • 2016-05-04
        • 2018-05-09
        • 1970-01-01
        • 2020-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多