1
import
sys2
from pyqt5.qtcore importqt3
from pyqt5.qtwidgets import
, qlabel, qhboxlayout45
6class
demo(qwidget):
7def
__init__
(self):
8 super(demo, self).__init__
()9 self.resize(500, 300)
10 self.label = qlabel('
no click')
1112
self.tree = qtreewidget(self) # 例項化樹形控制項
13self.tree.setcolumncount(1) #將該樹狀控制項的列數設為2(預設為1列)
14self.tree.setheaderlabels(['樹形控制項', '列'])15
#設定每列的標題,如果只有一列的話,則應該通過setheaderlabel(str)方法設定
1617
self.tree.itemclicked.connect(self.change_func)#單擊控制項時發出訊號18#
這個訊號會自動傳遞兩個引數19#
引數1就是被單擊的專案物件。20#
引數2就是單擊的列序號
2122
self.preview = qtreewidgetitem(self.tree) # 例項化乙個專案。引數:指定父類
23self.preview.settext(0, '頂層專案') #給專案設定文字。引數1:列序號
24 self.preview.settext(1, '
頂層專案-1列')
2526 self.preview1 =qtreewidgetitem()
27 self.preview1.settext(0, '
頂層專案1')
28 self.preview1.settext(1, '
頂層專案1-1列')
29self.tree.addtoplevelitem(self.preview1) #把self.preview1專案設定為頂層專案
3031 self.qt5112 =qtreewidgetitem()
32 self.qt5112.settext(0, '
qt 5112 snapshot')
33self.qt5112.setcheckstate(0, qt.unchecked) #設定核取方塊的位置和狀態34#
引數1 核取方塊的位置 列序號35#
qt.unchecked 沒選中36#
qt.checked 選中37#
qt.partiallychecked 部分選中
3839
self.preview.addchild(self.qt5112)#給self.preview新增子專案self.qt511240#
給self.qt5112新增父類
4142 choice_list = ['
macos
', '
android x86
', '
android armv7
', '
sources
', '
ios'
]43 self.item_list =
44for i, c in
enumerate(choice_list):
45 item =qtreewidgetitem(self.qt5112)
46item.settext(0, c)
47item.setcheckstate(0, qt.unchecked)
4849
50 self.test_item =qtreewidgetitem(self.qt5112)
51 self.test_item.settext(0, '
test1')
52 self.test_item.settext(1, '
test2')
5354
self.tree.expandall()
55#
讓所有的項都是以開啟狀態顯示的。注意必須要在所有項都已經例項化好之後再呼叫該方法,如果一開始就呼叫則會沒有效果
5657 self.h_layout =qhboxlayout()
58self.h_layout.addwidget(self.tree)
59self.h_layout.addwidget(self.label)
60self.setlayout(self.h_layout)
6162
defchange_func(self, item, column):
63self.label.settext(item.text(column))64#
item.text(column) 返回專案指定列的文字
6566
if item ==self.qt5112:
67if self.qt5112.checkstate(0) == qt.checked:#
判斷self.qt5112核取方塊的狀態。引數核取方塊位置:列序號68#
self.qt5112.checkstate(0) 返回核取方塊的狀態
69 [x.setcheckstate(0, qt.checked) for x in
self.item_list]
70else
:71 [x.setcheckstate(0, qt.unchecked) for x in
self.item_list]
72else
:73 check_count =0
74for x in
self.item_list:
75if x.checkstate(0) ==qt.checked:
76 check_count += 1
7778
if check_count == 5:
79self.qt5112.setcheckstate(0, qt.checked)
80elif 0 < check_count < 5:
81self.qt5112.setcheckstate(0, qt.partiallychecked) #設定核取方塊為半選中狀態
82else:83
self.qt5112.setcheckstate(0, qt.unchecked)
8485
86if
__name__ == '
__main__':
88 demo =demo()
89demo.show()
PyQt5之QTreeWidget樹形結構
方法 描述setcolumnwidth int column,int width 將指定列的寬度設定為給定的值width inserttoplevelitems 在檢視的頂層索引中插入專案列表 expandall 展開所有的樹形節點 invisiblerootitem 返回樹形控制項中不可見的根選項...
樹形控制項的使用
m tree.modifystyle null,tvs hasbuttons tvs haslines tvs linesatroot 設定 cimagelist pimagelist pimagelist new cimagelist pimagelist create 16,16,ilc mas...
樹形控制項簡單例子
此例項實現的功能 在乙個樹形控制項中顯示雞啄公尺 的簡單結構分層,共有三層,分別為雞啄公尺 各個分類和文章。用滑鼠左鍵單擊改變選中節點後,將選中節點的文字顯示到編輯框中。下面是具體實現步驟 1.建立乙個基於對話方塊的mfc工程,名稱設定為 example31 2.在自動生成的對話方塊模板idd ex...