2012-07-06 4 views
0

파이썬 플러그인을 사용 중입니다. 사용했습니다. PyQt4 디자이너. 쿼리 결과를 QTreeWidget에 나열하고 싶습니다. 내 코드는 다음과 같다 :QTreeWidget의 파이썬 쿼리 결과

c = self.db.con.cursor() 
self.db._exec_sql(c, "select est from bio") 
for row in c.fetchall(): 
    item_value=unicode(row[0]) 
    top_node1 = QTreeWidgetItem(item_value) 
    self.treeWidget.insertTopLevelItem(0, top_node1) 

쿼리로 값을 반환

enter image description here

하지만 위의 코드를 사용하여 QTreeWidget에이 값을 나열 할 때, 그것은 다음과 같습니다 :

enter image description here

만 Fi를 self.treeWidget.insertTopLevelItem (0, top_node1)에서 다른 숫자로 '0'을 변경하면 QTreeWidget에 아무 것도 표시되지 않습니다.

어떻게해야합니까 ???? 고맙습니다.

답변

2

documentation for a QTreeWidgetItem을 살펴보면 인스턴스 생성을위한 여러 가지 가능한 생성자가 있음을 알 수 있습니다. 비록 당신이 바람직한 결과를 줄 것 같은 방법으로 사용하고있는 것 같지는 않지만. 당신이 제공하는 서명에 가장 가까운 이상형 :

QTreeWidgetItem (const QStringList & strings, int type = Type)

는 이것이 아마 당신의 문자열을 복용하고있는 것은과 (내가 row[0]을 가정하고 난 당신이 사용하고있는 드라이버를 알 수 없기 때문에 문자열입니다) QStringList의 요구 사항을 채우는 시퀀스로 적용합니다. 따라서 얻는 것은 문자열 값의 각 문자로 항목의 여러 열을 채우는 것입니다. 이것이 원하는 경우, 더 많은 열을 표시하도록 위젯에 문의하십시오 : self.treeWidget.setColumnCount(10). 그러나 이것은 당신이 찾고있는 것이 아닙니다.

원하는 컬럼 값을 다음 새 항목을 만들 추가하는 것입니다 당신이 시도해야 더 많은 가능성이

:

item = QTreeWidgetItem() 
item.setText(0, unicode(row[0])) 
self.treeWidget.insertTopLevelItem(0, item) 

당신은 인수가없는 기본 생성자를 사용할 수의 텍스트 값을 설정 첫 번째 열을 데이터베이스 레코드 필드 값에 적용한 다음 해당 항목을 트리에 추가하십시오. 또한 항목의 목록을 구축하고 한 번에를 추가 할 수 있습니다

가 첫 번째 aproach가 해결 될 수
items = [] 
for row in c.fetchall(): 
    item = QTreeWidgetItem() 
    item.setText(0, unicode(row[0])) 
    items.append(item) 
self.treeWidget.insertTopLevelItems(0, items) 
+0

고맙습니다 .. :) 어떻게 나무의 부모로 하나의 항목을 만드나요? ??? 나는 valestimate = QTreeWidgetItem (sel_estimate)을 시도했다. self.treeWidget .__ init__ (self, valestimate, items, type = QTreeWidgetItem.Type) ...하지만 오류가 발생한다. – poonam

+1

트리에서 init 메소드를 호출하려고합니까? 그러지 마. init 메소드를 직접 사용해야하는 유일한 방법은 treewidget을 서브 클래스 화하여 사용자 정의 커스텀 클래스를 만드는 것입니다. QTreeWidgetItem에는 자식을 추가하는 자체 메서드가 있습니다. args가없는 새 항목을 만드십시오. 그것을 설정하십시오. 그런 다음 parentItem.addChild (childItem)을 수행하십시오. 그리고 매우 importand : http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qtreewidgetitem 문서를 읽어보십시오.최상위 항목에 대한 html – jdi

1

단지 widgetitem이 마음에 들지 문자열 목록을 추가 :

top_node1 = QTreeWidgetItem ([item_value])

+0

은 다음을 사용합니다. self.treeWidget.addTopLevelItems (items) – Macbeth

+0

Stack Overflow에 오신 것을 환영합니다! [코드를 포맷하는 방법] (http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)과 [기타 옵션] (http : /stackoverflow.com/editing-help/) 게시물 서식을 지정해야합니다. 자신의 게시물을 편집하여 잊어 버린 정보를 추가 할 수 있습니다. [FAQ 목록] (http://meta.stackexchange.com/questions/7931/faq-for-stack-exchange-sites)을 보시고 그 중 일부를 읽어 보시기 바랍니다. 특히 대답하고 질문하는 것. – phant0m