文章内容是pyqt5快速开发实践的内容结构,整理出来,便于后续复习
child1 = QTreeWidgetItem(root)
child1.setText(0,'child1')#0类似于树形结构的key
child1.setText(1,'ios')#1类似于树形结构的value
child1.setIcon(0,QIcon("./images/IOS.png"))
child1.setCheckState(0, Qt.Checked)
self.tab2UI()
def tab3UI(self):
layout=QHBoxLayout()
layout.addWidget(QLabel("科目"))
layout.addWidget(QCheckBox("物理"))
layout.addWidget(QCheckBox("高数"))
self.setTabText(2,"教育程度")#这里的2代表第二个选项卡
self.tab3.setLayout(layout)
self.leftlist = QListWidget ()#创建一个对象
self.leftlist.insertItem (0, '联系方式' )
self.leftlist.insertItem (1, '个人信息' )
self.leftlist.insertItem (2, '教育程度' )
self.stack1= QWidget()#创建3个stack对象
self.stack2= QWidget()
self.stack3= QWidget()#只负责创建了对象,具体stack中长得什么样子,在顺序执行到下面的句子中得到结果
self.stack1UI()#3个自定义的函数。执行完这三个句子之后,stack中就会有了内容
self.stack2UI()
self.stack3UI()
self.Stack = QStackedWidget (self)#创建QStackWidget对象
self.Stack.addWidget (self.stack1)#将3个创建好的结构加入到对象中
self.Stack.addWidget (self.stack2)
self.Stack.addWidget (self.stack3)
hbox = QHBoxLayout(self)
hbox.addWidget(self.leftlist)
hbox.addWidget(self.Stack)
self.setLayout(hbox)
self.leftlist.currentRowChanged.connect(self.display)
def stack1UI(self):
layout=QFormLayout()
layout.addRow("姓名",QLineEdit())
layout.addRow("地址",QLineEdit())
self.stack1.setLayout(layout)
def stack2UI(self):
layout=QFormLayout()
pass
self.stack2.setLayout(layout)
def stack3UI(self):
pass
QDockWidget
这是一个可以保持浮动状态或在指定位置附加到主窗口中
QMidArea 多文档界面
tab和stack空间只允许一次使用其中的一个窗口
QScrollBar
start()
。然后,定时器会议恒定的时间间隔发出timeout信号。当窗口控件收到这个timeout信号,便会停止这个计时器 self.timer.timeout.connet(self.showTime)
self.startBtn.clicked.connect( self.startTimer)
self.endBtn.clicked.connect( self.endTimer)
def startTimer(self):
# 设置计时间隔并启动
self.timer.start(1000)
self.startBtn.setEnabled(False)
self.endBtn.setEnabled(True)
def endTimer(self):
self.timer.stop()
self.startBtn.setEnabled(True)
self.endBtn.setEnabled(False)
QThread.run()
函数class myThread(QThread):
def __init__(self):
super(Thread,self).__init__()
def run(self):
#thread的相关代码
pass
#实例化一个线程并用过start开始执行
#调用start()函数口渴启动县城,线程启动之后就会自动调用并实现run方法
thread = myThread()
thread.start()
业务的线程任务就写在run函数中,当run退出之后,线程就结束了。QThread有stared和finished信号,可以为这两个信号指定slot函数,在线程启动和结束时执行一段代码进行资源的初始化与释放操作。更灵活的方式时在自定义的Qthread实例中自定义一个信号,并将自定义的信号连接到指定的slot函数
#删除了部分函数
class MainWidget(QWidget):
def __init__(self,parent=None):
self.thread = Worker()#继承一个线程实例
self.btnStart.clicked.connect( self.slotStart )
#c
self.thread.sinOut.connect(self.slotAdd)
def slotStart(self):
self.btnStart.setEnabled(False)
self.thread.start()#启动线程,自动调用run函数
class Worker(QThread):
#a
sinOut = pyqtSignal(str)
def __init__(self,parent=None):
def __del__(self):
def run(self):
while self.working == True:
# 发出信号
#b
self.sinOut.emit(file_str)
# 线程休眠2秒
self.sleep(2)
提前插入说一下abc三个句子的关系:
通过在一个实例中添加a
b
两个句子,在这个实例(上面代码是在线程中,当然在其他的class中也是可以的)下创建了sinOut
这个信号,然后实例化后,就可以在c
处使用这个自定义的信号了ab有联系,ac,bc无联系
ac->QThread->Worker -> self.thread->c,至此,ab和c才有了联系
QApplication.processEvents()
使用QWebEngineView
空间来展示html页面,实际上使用http get方法实现web加载
view = QWebEngineView()
view.load(QUrl('http://baidu.com'))
view.show()