pyqt5-下拉框聯動效果


 
         
from PyQt5.Qt import *

class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("")
self.resize(500,500)

#后期這個字典可以從數據庫中傳入
self.province = {
"安徽省":["3401",{
"合肥市":"340101",
"六安市":"340102",
"阜陽市":"340103",
"蕪湖市":"340104",
"滁州市":"340105",
"宣城市":"340106",
"黃山市":"340107",
"亳州市":"340108",
}],
"江蘇省": ["5201", {
"南京市": "520101",
"蘇州市": "520102",
"無錫市": "520103",
"常州市": "520104",
"鹽城市": "520105",
"揚州市": "520106",
}],
"湖北省": ["4201", {
"武漢市": "420101",
"鄂州市": "420102",
"荊門市": "420103",
"襄陽市": "420104",
"咸寧市": "420105",
"黃岡市": "420106",
}],
}

self.setup_ui()

def setup_ui(self):
#1.創建省下拉框,修改一些顯示尺寸(這個可以自行調節)
qcb_pro = QComboBox(self)
qcb_pro.resize(80,25)
qcb_pro.move(100,100)
self.qcb_pro = qcb_pro

#3.創建市下拉選擇框
qcb_city = QComboBox(self)
qcb_city.resize(80,25)
qcb_city.move(190,100)
self.qcb_city = qcb_city

# 4.為下拉框綁定觸發事件,currentIndexChanged信號有兩個方法,指定獲取int的這個方法
qcb_pro.currentIndexChanged[int].connect(self.pro_changed)
qcb_city.currentIndexChanged[int].connect(self.city_change)

# 2.為省下拉框填充數據,可根據從數據庫中檢索出的數據,動態填充
for key, val in self.province.items():
qcb_pro.addItem(key, val[0])

def pro_changed(self,pro_idx):
#省下拉框改變,先清空市下拉框,然后添加市數據
self.qcb_city.clear()
for key,val in self.province[self.qcb_pro.currentText()][1].items():
self.qcb_city.addItem(key,val)
#同時獲取省下拉框對應的data數據,這里只是簡單打印
print(self.qcb_pro.itemData(pro_idx))

def city_change(self,city_idx):
#因為在省下拉框操作的時候,有一個clear方法執行,也會觸發這個方法,但是由於被清空,傳遞過來的索引就是-1,就拿不到數據
if city_idx == -1:
pass
else:
# 同時獲取市下拉框對應的data數據,這里只是簡單打印
print(self.qcb_city.itemData(city_idx))


if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec())
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM