一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 對(duì)PyQt5中樹結(jié)構(gòu)的實(shí)現(xiàn)方法詳解

對(duì)PyQt5中樹結(jié)構(gòu)的實(shí)現(xiàn)方法詳解

2021-07-13 00:22husthgzjp Python

今天小編就為大家分享一篇對(duì)PyQt5中樹結(jié)構(gòu)的實(shí)現(xiàn)方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

樹的實(shí)質(zhì)是很多條數(shù)據(jù)按照一定的內(nèi)在關(guān)系,分層級(jí)顯示出來。因此每一條數(shù)據(jù)包括數(shù)據(jù)項(xiàng)和相互關(guān)系。數(shù)據(jù)項(xiàng)就對(duì)應(yīng)了樹中的column,而相互關(guān)系對(duì)應(yīng)的是應(yīng)該顯示在哪一個(gè)條目下。

pyqt5中,樹的實(shí)現(xiàn)有兩種形式,其中較為簡(jiǎn)單的是使用tree widget控件。

對(duì)于靜態(tài)的數(shù)據(jù),實(shí)現(xiàn)樹結(jié)構(gòu)可以直接在qt中拖入一個(gè)tree widget控件,然后右鍵點(diǎn)擊它,選擇編輯。

對(duì)PyQt5中樹結(jié)構(gòu)的實(shí)現(xiàn)方法詳解

對(duì)PyQt5中樹結(jié)構(gòu)的實(shí)現(xiàn)方法詳解

其中column是每一條數(shù)據(jù)有幾個(gè)數(shù)據(jù)項(xiàng),item體現(xiàn)的是數(shù)據(jù)和數(shù)據(jù)之間是什么關(guān)系。

對(duì)于我們需要從數(shù)據(jù)庫中查出來的數(shù)據(jù),我么需要根據(jù)實(shí)際的數(shù)據(jù)進(jìn)行排列,確定一個(gè)樹的每一級(jí)有多少個(gè)條目。

其中有一種可行的實(shí)現(xiàn)方法是,受限用sql對(duì)查到的數(shù)據(jù)按照樹從上到下的結(jié)構(gòu)排序,然后用如下代碼實(shí)現(xiàn):

?
1
2
3
4
5
6
7
8
9
10
11
a = ['1', '11', '12', '13', '2', '21', '22', '23']
# 你的數(shù)據(jù)按照
# 【root,child1,child11,child12,child13,child2,child21,child22】
# 這種順序排列
for i in range(len(a)):
  if len(a[i]) == 1 :
    root = qtwidgets.qtreewidgetitem(self.treewidget)
    root.settext(0,a[i])
   elif len(a[i]) == 2 :
    child = qtwidgets.qtreewidgetitem(root)
    child.settext(0,a[i])

用上述代碼得到的就是一個(gè)僅僅只有顯示功能的樹。

一般情況下,我們希望我們點(diǎn)擊樹的某一個(gè)條目,能夠有相應(yīng)的操作。

進(jìn)入到信號(hào)和槽的編輯界面,左鍵點(diǎn)擊tree widget,拖動(dòng)到form的空白處,出現(xiàn)信號(hào)和槽的編輯界面。

對(duì)PyQt5中樹結(jié)構(gòu)的實(shí)現(xiàn)方法詳解

左邊是tree widget的信號(hào)的列表,右邊是我們自定義的槽,可以點(diǎn)擊edit進(jìn)行增加和刪除。

tree widget的信號(hào)說明可以參考qt的幫助文檔。如下是itemclicked信號(hào)的說明:

[signal] void qtreewidget::itemclicked(qtreewidgetitem *item, int column)

this signal is emitted when the user clicks inside the widget.

the specified item is the item that was clicked. the column is the item's column that was clicked. if no item was clicked, no signal will be emitted.

經(jīng)過上述編輯之后,ui文件生成的py文件中,實(shí)現(xiàn)信號(hào)和槽連接的代碼如下:

?
1
2
self.treewidget.itemclicked['qtreewidgetitem*','int'].connect(form.tree_item_click)
# 其中tree_item_click是自己定義的槽函數(shù)

槽函數(shù)的參數(shù)與信號(hào)的參數(shù)要相同,或者更少。

?
1
2
def tree_item_click(self,item,n):
    print(item.text(n))

item為qtreewidgetitem類。可以參照qt幫助文檔中的qtreewidgetitem類的說明,實(shí)現(xiàn)自定義的功能。

總結(jié):本文提供了一種樹結(jié)構(gòu)的實(shí)現(xiàn),樹的某個(gè)條目被點(diǎn)擊之后的響應(yīng)的實(shí)現(xiàn)。更多的是提供了一種pyqt相關(guān)資料的查詢方法。通過對(duì)qt幫助文檔的查詢,可以指導(dǎo)pyqt的應(yīng)用。

以上這篇對(duì)pyqt5中樹結(jié)構(gòu)的實(shí)現(xiàn)方法詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/weixin_40910342/article/details/81711695

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 毛片a级放荡的护士hd | 免费被黄网站在观看 | 91看片淫黄大片欧美看国产片 | 国产三级精品三级男人的天堂 | 顶级欧美做受xxx000 | 日韩亚洲人成在线 | 毛片免费在线视频 | 深夜福利免费观看 | 91九色最新地址 | 免费高清资源黄网站在线观看 | 无人知晓小说姜璟免费阅读 | 天堂资源8中文最新版 | lubuntu网页版在线 | 午夜爽喷水无码成人18禁三级 | 手机看片自拍自自拍日韩免费 | 狠狠色婷婷狠狠狠亚洲综合 | 日本在线亚州精品视频在线 | av中文字幕网免费观看 | fc2成人免费共享视频 | aⅴ免费视频| 国产精品久久久久久久人人看 | 天天射天天舔 | 久久久久影视 | 91美女在线视频 | 四缺一的小说 | a级特黄毛片免费观看 | 秀逼逼 | 国产亚洲视频在线 | 日本韩国一区二区三区 | 国产中文在线视频 | 免费观看在线永久免费xx视频 | 成人网视频免费播放 | 亚洲欧美在线观看一区二区 | 网友自拍偷拍 | 性色xxx | 2019男人天堂| 91免费破解版 | 九九热这里只有精品2 | 亚洲AV无码乱码国产麻豆穿越 | 国产在线观看99 | 欧美日一级片 |