为什么我不能在qt设计器中向textBrowser添加列表?

时间:2018-10-19 05:25:46

标签: python

我是新手,正在尝试我的第一个应用程序。尝试做一种组合类型的计算器,以显示整个6个食物组中2个用户输入的食物项目(a和b)的不同组合。在尝试将其整合在一起时,我遇到了一个问题。我正在使用qt设计器和python。

这是我遇到的部分代码:

def addItem(self):
    a = self.lineEdit.text()
    b = self.lineEdit2.text()
    value = [a, b]
    self.lineEdit.clear()
    self.lineEdit2.clear()
    self.textBrowser.append(value)

当从两个单独的lineEdit框中按下我的addBtn时,应该将两者放在textBrowser中的列表集中。我希望浏览器看起来像这样:

[item1, item3]
[item5, item6]
[item4, item7]
[item2, item9]
[item11, item 8]
item10, item12]

相反,我得到: TypeError:append(self,str):参数1具有意外的类型“列表”

我搜索并发现了类似的情况,但是没有一个处理列表。如果可以的话请帮忙。非常感谢。

*请注意,以下代码在尝试将其列为列表之前已经起作用。

def addItem(self):
    value = self.lineEdit.text()
    self.lineEdit.clear()
    self.textBrowser.append(value) 

此代码有效,但在浏览器中显示如下:

   item1
   item2
   item3
   item4
   item5
   item6
   item7
   item8
   item9
   item10
   item11
   item12

1 个答案:

答案 0 :(得分:0)

文本浏览器要求设置或附加的值是字符串。您需要构造所需的字符串。以下是一些选项:

value_str = str([a, b])      # type casting, might work for small lists
value_str = '[' + a + ',' + b + ']' # string concatenation
value_str = '[{}, {}]'.format(a, b)    # one of python's 3 string interpolation methods
value_str = f'[{a},{b}]'     # f-string, python 3.6+

有关str.format的更多提示,请参见此处:https://pyformat.info/,尽管您应该在个人项目中完全使用f字符串。

构建您的应用程序很有趣!