当程序有多个窗口时,必须要解决的一个问题是窗口之间的数据传输,先学习一个简单的单一窗口不同控件之间的数据传输。实际上这种使用方法前面多次使用过。
功能:改变滑块值LCD值会相应改变
# ———创建时间:2019。2.19———
# 窗口之间数据传输
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import qdarkstyle
class WinFrom(QWidget):
def __init__(self):
super(WinFrom, self).__init__()
self.initUI()
def initUI(self):
# 创建滑块和lcd控件
lcd=QLCDNumber(self)
sider=QSlider(Qt.Horizontal,self)
#布局
vbox=QVBoxLayout()
vbox.addWidget(lcd)
vbox.addWidget(sider)
self.setLayout(vbox)
sider.valueChanged.connect(lcd.display)
self.setGeometry(300,300,350,150)
self.setWindowTitle("滑动滑块改变lcd数值")
if __name__ == "__main__":
app=QApplication(sys.argv)
form=WinFrom()
form.show()
app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())
sys.exit(app.exec_())
运行结果:
注:乍一看好像没有发射函数emit(),只是因为ValueChange()当slider发生改变时,会自动发射信号
总结,多窗口之间数据传输解决方法:
- 主窗口获得子窗口中控件属性值,下一篇博客介绍
- 通过信号与槽传输,如上面例子