知识回顾:
1.掌握Qpixmap图片对象
2.掌握qlabel控件装载和调整图片
一、目标案例:省市联动选择
1.需要两个下拉列表
2.点击第一个下拉列表后,会联动第二个列表中的内容
3.要求使用frame的绝对布局
应用效果
二、下拉框combobox使用
1.基本配置
主要用于选择,比如省市联动选择必须要载入Qcombobox类。
实例化类为一个对象,对这个对象进行配置,实则就是对下拉列表的配置。
combo1=QComboBox(myframe1) 在实例化的时候,要选择父容器
combo1.move(20,0)
我们通过addItem来往combobox中装入项目。
combo1.addItem("选择省份")
combo1.addItem("浙江")
combo1.addItem("江苏")
combo1.addItem("安徽")
用到clear方法将所有项目进行清空。
2.下拉选择事件
Combobox的点击事件
理解为激活actived信号。
信号有两种传递方式:
第一种:传递字符串,这个实则传递的是选择的文本。
combo1.activated[str].connect(自定义槽方法)
第二种:传递整型变量,这个传递的是选择的索引。索引默认从0开始。
第一项的索引是0,第二项的索引是1,依次类推..
combo1.activated[int].connect(自定义槽方法)
省市联动的combobox
注意:必须要将需要联动的控件做成类对象的属性。实际上就是加上self.
三、扩展知识内容
下拉列表框也可以进行输入,但是需要对方法进行配置。
配置setEditable 为True:
combo1.setEditable(True)
对应的信号为: editTextChanged
那么我们同样可以采用信号槽的方式实现编辑时候的事件处理函数。
得出的经验特点:
我们在书写信号的时候,这些信号基本上都是以ed进行结尾的。
四、总结强调
1.掌握qcombobox的载入布局与项目加载。
2.掌握下拉列表的编辑和对应事件。
3.掌握联动的思想。
本节知识源代码:
import sys from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QComboBox,QFrame class MyClass(QWidget): def __init__(self): super(MyClass, self).__init__() self.initUI() def initUI(self): self.setWindowTitle("刘金玉编程") self.setGeometry(300,100,400,300) myframe1=QFrame(self) myframe1.move(50,50) lbl1=QLabel("省",myframe1) lbl1.move(0,3) combo1=QComboBox(myframe1) combo1.move(20,0) # combo1.setEditable(True) combo1.activated[str].connect(self.myActived) #省份 combo1.addItem("选择省份") combo1.addItem("浙江") combo1.addItem("江苏") combo1.addItem("安徽") #市级 lbl1 = QLabel("市", myframe1) lbl1.move(100, 3) self.combo2 = QComboBox(myframe1) self.combo2.move(120, 0) self.show() def myActived(self,s): self.combo2.clear() if s=="浙江": self.combo2.addItem("杭州") self.combo2.addItem("宁波") self.combo2.addItem("温州") elif s=="江苏": self.combo2.addItem("苏州") self.combo2.addItem("无锡") self.combo2.addItem("扬州") self.combo2.addItem("南京") if __name__=="__main__": app=QApplication(sys.argv) mc=MyClass() app.exec_()