PyQt开发(二)
来源:互联网 发布:淘宝卖家不发货 编辑:程序博客网 时间:2024/06/07 06:00
设计小窗口用QWidget,主要活用一个东西:QGridLayout.
用法代码可以直观看到
class courseWindow(QWidget): def __init__(self,parent=None): self.ClassBasicStatis=EDXdata.BasicStatis() self.Main1=MainWindow() QtGui.QWidget.__init__(self, parent) self.proxyModel = QtGui.QSortFilterProxyModel() #(A)QSortFilterProxyModel提供从其他的model和view排序,过滤的操作,这是一个model来的 self.proxyModel.setDynamicSortFilter(True) # 动态的将两表关联起来,后者去关联前者 self.studentDataBox = QtGui.QGroupBox(u"学生基本数据展示") #设置box的名字,没关系 self.courseDataBox = QtGui.QGroupBox(u"课程统计") self.featureBox=QtGui.QGroupBox(u"特征行为统计") self.studentDistribute=QtGui.QGroupBox(u"学生单一统计在课程中的分布")#第一个盒子:学生基本数据展示 sourceLayout = QtGui.QGridLayout() #下面是对layout的指定,就是这样的,layout的意思是布局#插入button与表格 # print str(Main1.filename[0]) self.table=QTableWidget() self.courseID = QtGui.QLineEdit() #创建了一个单行输入的 self.seeklable = QtGui.QLabel(u"请输入课程ID:") #创建一个label对象,写上名字 self.seeklable.setBuddy(self.courseID) #这里设置了伙伴?有什么用处呢, 显现的是:如果将它去掉,则会显示&符号的。 check=QtGui.QPushButton(u'查询') self.connect(check, QtCore.SIGNAL('clicked()'), self.DisplayStudentData) pushbutton0=QtGui.QPushButton('<---',self) self.connect(pushbutton0, QtCore.SIGNAL('clicked()'), self.returnMain) sourceLayout.addWidget(pushbutton0,0,0,1,1) sourceLayout.addWidget(self.seeklable,1,0,1,2) sourceLayout.addWidget(self.courseID,1,2,1,1) sourceLayout.addWidget(check,1,6,1,1) sourceLayout.addWidget(self.table,3,0,1,8) self.studentDataBox.setLayout(sourceLayout)#第二个盒子:课程总体统计 courseLayout = QtGui.QGridLayout()#插入button与表格 self.table2=QTableWidget() figureDisplay0=QtGui.QPushButton(u'课程行为统计') figureDisplay1=QtGui.QPushButton(u'总体可视化') figureDisplay2=QtGui.QPushButton(u'平均可视化') figureDisplay3=QtGui.QPushButton(u'对比显示') self.connect(figureDisplay1,QtCore.SIGNAL('clicked()'),self.plotVisual) self.connect(figureDisplay2,QtCore.SIGNAL('clicked()'),self.average) self.connect(figureDisplay3,QtCore.SIGNAL('clicked()'),self.comparison) self.connect(figureDisplay0,QtCore.SIGNAL('clicked()'),self.DisplayCourseAct) courseLayout.addWidget(self.table2,0,0,5,5) courseLayout.addWidget(figureDisplay0,0,6,1,1) courseLayout.addWidget(figureDisplay1,1,6,1,1) courseLayout.addWidget(figureDisplay2,2,6,1,1) courseLayout.addWidget(figureDisplay3,3,6,1,1) self.courseDataBox.setLayout(courseLayout)#第三个盒子,特征行为统计 self.featureDisLayout=QtGui.QGridLayout()#插入表格 self.table03=QTableWidget()# #插入button与控件 self.featureGrade=QComboBox() self.featureGrade.addItems(['grade:A','grade:B','grade:C','grade:D','not get score','get certi','not certi','explore study','not explore']) figureDisplay6=QtGui.QPushButton(u'添加信息') figureDisplay9=QtGui.QPushButton(u'单一信息统计') figureDisplay10=QtGui.QPushButton(u'综合信息统计') figureDisplay11=QtGui.QPushButton(u'单一信息可视化') figureDisplay12=QtGui.QPushButton(u'综合信息可视化') figureDisplay5=QtGui.QPushButton(u'特征统计') figureDisplay7=QtGui.QPushButton(u'特征可视化') self.connect(figureDisplay5,QtCore.SIGNAL('clicked()'),self.gradeStatis) self.connect(figureDisplay7,QtCore.SIGNAL('clicked()'),self.featurecomparison) self.connect(figureDisplay6,QtCore.SIGNAL('clicked()'),self.addInfo) self.connect(figureDisplay9,QtCore.SIGNAL('clicked()'),self.infoSta) self.connect(figureDisplay10,QtCore.SIGNAL('clicked()'),self.InteInfoSta) self.connect(figureDisplay11,QtCore.SIGNAL('clicked()'),self.InfoVisualise) self.connect(figureDisplay12,QtCore.SIGNAL('clicked()'),self.InteInfoVisualise)#布局 self.featureDisLayout.addWidget(self.featureGrade,0,0,1,1) self.featureDisLayout.addWidget(figureDisplay5,0,7,1,1) self.featureDisLayout.addWidget(figureDisplay7,1,7,1,1) self.featureDisLayout.addWidget(figureDisplay6,2,7,1,1) self.featureDisLayout.addWidget(figureDisplay9,3,7,1,1) self.featureDisLayout.addWidget(figureDisplay11,4,7,1,1) self.featureDisLayout.addWidget(figureDisplay10,5,7,1,1) self.featureDisLayout.addWidget(figureDisplay12,6,7,1,1) self.featureDisLayout.addWidget(self.table03,1,0,7,7) self.featureBox.setLayout(self.featureDisLayout)#第四个盒子,学生单一特征在总体中分布 courseScatter=QtGui.QGridLayout() self.table3=QTableWidget() Distribute=QtGui.QPushButton(u'分布') self.feature=QComboBox() self.feature.addItems(['studytime','registered','viewed','explored','certified','grade','nevents','studytime','ndays_act','nplay_video','nchapters','nforum_posts']) self.connect(Distribute, QtCore.SIGNAL('clicked()'), self.courseScatterDisplay) figureDisplay=QtGui.QPushButton(u'图表展示') self.connect(figureDisplay,QtCore.SIGNAL('clicked()'),self.plotScatter) courseScatter.addWidget(self.feature,0,0,1,1) courseScatter.addWidget(self.table3,1,0,5,5) courseScatter.addWidget(Distribute,1,6,1,1) courseScatter.addWidget(figureDisplay,2,6,1,1) self.studentDistribute.setLayout(courseScatter) # self.figureView = QtGui.QTreeView() #建立资源的树形目录 # self.figureView.setRootIsDecorated(False) #要不要显示根目录的,false是不要 # self.figureView.setAlternatingRowColors(True) #两行要不要用不同的颜色显示的 # figureLayout=QtGui.QGridLayout() # self.connect(figureDisplay,QtCore.SIGNAL('clicked()'),self.plot) # figure=self.plot() # # figureLayout.addWidget(self.figureView, 0, 0, 1, 8) # self.figureBox.setLayout(figureLayout) mainLayout = QtGui.QVBoxLayout() mainLayout.addWidget(self.studentDataBox) mainLayout.addWidget(self.courseDataBox) mainLayout.addWidget(self.featureBox) mainLayout.addWidget(self.studentDistribute) self.setLayout(mainLayout) self.setWindowTitle(u"课程统计") #对主窗口大小标题的定义 self.resize(900, 700)#button连接部分 def DisplayStudentData(self): self.courseBasicData=self.ClassBasicStatis.actDistribution(str(self.courseID.text())) self.table.setColumnCount(8) self.table.setRowCount(len(self.courseBasicData)+1) self.table.setItem(0,0,QTableWidgetItem(self.tr("studentID"))) self.table.setItem(0,1,QTableWidgetItem(self.tr("studytime"))) self.table.setItem(0,2,QTableWidgetItem(self.tr("grade"))) self.table.setItem(0,3,QTableWidgetItem(self.tr("nevents"))) self.table.setItem(0,4,QTableWidgetItem(self.tr("act_days"))) self.table.setItem(0,5,QTableWidgetItem(self.tr("nplay_video"))) self.table.setItem(0,6,QTableWidgetItem(self.tr("nchapters"))) self.table.setItem(0,7,QTableWidgetItem(self.tr("posts"))) for i in range(0,len(self.courseBasicData)): for j in range(0,len(self.courseBasicData[0])): studentdata=QTableWidgetItem(str(self.courseBasicData[i][j])) self.table.setItem(i+1,j,studentdata) def DisplayCourseAct(self): self.courseData=self.ClassBasicStatis.courseIDstatic(str(self.Main1.filename[0]),str(self.courseID.text())) self.averCourseData=self.ClassBasicStatis.averStatis(self.courseData) self.table2.setColumnCount(len(self.courseData)+1) self.table2.setRowCount(3) self.table2.setItem(0,0,QTableWidgetItem('datalabel')) self.table2.setItem(1,0,QTableWidgetItem('total')) self.table2.setItem(2,0,QTableWidgetItem('average')) courseStatic=[] num=[] averNum=[] for i in self.courseData.iterkeys(): num.append(QTableWidgetItem(str(self.courseData.get(i)))) averNum.append(QTableWidgetItem(str(self.averCourseData.get(i)))) courseStatic.append(QTableWidgetItem(i)) for j in range(0,len(self.courseData)): self.table2.setItem(0,j+1,courseStatic[j]) self.table2.setItem(1,j+1,num[j]) self.table2.setItem(2,j+1,averNum[j]) def courseScatterDisplay(self): self.studentDistribute=self.ClassBasicStatis.coursedataAllocation(str(self.Main1.filename[0]),str(self.courseID.text()),str(self.feature.currentText())) #表格设计 studentName=[] featureStatic=[] self.table3.setColumnCount(len(self.studentDistribute)) self.table3.setRowCount(2) for i in self.studentDistribute.iterkeys(): studentName.append(i) featureStatic.append(str(self.studentDistribute.get(i))) for j in range(0,len(self.studentDistribute)): self.table3.setItem(0,j,QTableWidgetItem(studentName[j])) self.table3.setItem(1,j,QTableWidgetItem(featureStatic[j])) def gradeStatis(self): self.mapStatis=self.ClassBasicStatis.featureStatis(str(self.Main1.filename[0]),str(self.courseID.text()),str(self.featureGrade.currentText())) self.averMapStatis=self.ClassBasicStatis.averStatis(self.mapStatis) self.table03.setColumnCount(len(self.mapStatis)+1) self.table03.setRowCount(3) self.table03.setItem(0,0,QTableWidgetItem('datalabel')) self.table03.setItem(1,0,QTableWidgetItem('total')) self.table03.setItem(2,0,QTableWidgetItem('average')) courseStatic=[] num=[] averNum=[] for i in self.mapStatis.iterkeys(): num.append(QTableWidgetItem(str(self.mapStatis.get(i)))) averNum.append(QTableWidgetItem(str(self.averMapStatis.get(i)))) courseStatic.append(QTableWidgetItem(i)) for j in range(0,len(self.mapStatis)): self.table03.setItem(0,j+1,courseStatic[j]) self.table03.setItem(1,j+1,num[j]) self.table03.setItem(2,j+1,averNum[j]) def addInfo(self): self.info0=self.ClassBasicStatis.getInfo(str(self.Main1.filename[0]))[0] self.info1=self.ClassBasicStatis.getInfo(str(self.Main1.filename[0]))[1] self.info2=self.ClassBasicStatis.getInfo(str(self.Main1.filename[0]))[2] self.info3=self.ClassBasicStatis.getInfo(str(self.Main1.filename[0]))[3] self.information0=QComboBox() self.information0.addItems(self.info0) self.information1=QComboBox() self.information1.addItems(self.info1) self.information2=QComboBox() self.information2.addItems(self.info2) self.information3=QComboBox() self.information3.addItems(self.info3) self.info = QtGui.QLabel(u"单一信息:") #创建一个label对象,写上名字 self.information4=QComboBox() self.information4.addItems(self.info0) self.information4.addItems(self.info1) self.information4.addItems(self.info2) self.information4.addItems(self.info3) self.featureDisLayout.addWidget(self.information0,0,1,1,1) self.featureDisLayout.addWidget(self.information1,0,2,1,1) self.featureDisLayout.addWidget(self.information2,0,3,1,1) self.featureDisLayout.addWidget(self.information3,0,4,1,1) self.featureDisLayout.addWidget(self.info,0,5,1,1) self.featureDisLayout.addWidget(self.information4,0,6,1,1) def infoSta(self): self.mapInfoStatis=self.ClassBasicStatis.infoStatis(str(self.Main1.filename[0]),str(self.courseID.text()),str(self.information4.currentText())) self.averInfoMapStatis=self.ClassBasicStatis.averStatis(self.mapInfoStatis) self.table03.setColumnCount(len(self.mapInfoStatis)+1) self.table03.setRowCount(3) self.table03.setItem(0,0,QTableWidgetItem('datalabel')) self.table03.setItem(1,0,QTableWidgetItem('total')) self.table03.setItem(2,0,QTableWidgetItem('average')) courseStatic=[] num=[] averNum=[] for i in self.mapInfoStatis.iterkeys(): num.append(QTableWidgetItem(str(self.mapInfoStatis.get(i)))) averNum.append(QTableWidgetItem(str(self.averInfoMapStatis.get(i)))) courseStatic.append(QTableWidgetItem(i)) for j in range(0,len(self.mapInfoStatis)): self.table03.setItem(0,j+1,courseStatic[j]) self.table03.setItem(1,j+1,num[j]) self.table03.setItem(2,j+1,averNum[j]) def InteInfoSta(self): self.mapInfoStatis2=self.ClassBasicStatis.InteInfoStatis(str(self.Main1.filename[0]),str(self.courseID.text()),str(self.information0.currentText()),str(self.information1.currentText()),str(self.information2.currentText()),str(self.information3.currentText())) self.averInfoMapStatis2=self.ClassBasicStatis.averStatis(self.mapInfoStatis2) self.table03.setColumnCount(len(self.mapInfoStatis2)+1) self.table03.setRowCount(3) self.table03.setItem(0,0,QTableWidgetItem('datalabel')) self.table03.setItem(1,0,QTableWidgetItem('total')) self.table03.setItem(2,0,QTableWidgetItem('average')) courseStatic=[] num=[] averNum=[] for i in self.mapInfoStatis2.iterkeys(): num.append(QTableWidgetItem(str(self.mapInfoStatis2.get(i)))) averNum.append(QTableWidgetItem(str(self.averInfoMapStatis2.get(i)))) courseStatic.append(QTableWidgetItem(i)) for j in range(0,len(self.mapInfoStatis2)): self.table03.setItem(0,j+1,courseStatic[j]) self.table03.setItem(1,j+1,num[j]) self.table03.setItem(2,j+1,averNum[j]) def returnMain(self): self.mainWin=MainWindow() self.hide() self.mainWin.show()#可视化部分 def InfoVisualise(self): self.ClassBasicStatis.ComparVisualiseStudentData(self.mapInfoStatis,self.averInfoMapStatis) def InteInfoVisualise(self): self.ClassBasicStatis.ComparVisualiseStudentData(self.mapInfoStatis2,self.averInfoMapStatis2) def average(self): self.ClassBasicStatis.visualiseStudentData(self.averCourseData) def featureaverage(self): self.ClassBasicStatis.visualiseStudentData(self.averMapStatis) def comparison(self): self.ClassBasicStatis.ComparVisualiseStudentData(self.courseData,self.averCourseData) def featurecomparison(self): self.ClassBasicStatis.ComparVisualiseStudentData(self.mapStatis,self.averMapStatis) def featureplotVisual(self): self.ClassBasicStatis.visualiseStudentData(self.mapStatis) def plotVisual(self): self.ClassBasicStatis.visualiseStudentData(self.courseData) def plotScatter(self): self.ClassBasicStatis.scatterplot(self.studentDistribute)
自己的代码包含的东西有点多。因为数据包含的信息有不少可以收集整理的。
0 0
- PyQt开发(二)
- PyQt开发(一)
- PyQt开发讲解
- eric pyqt开发
- PyQt开发讲解
- pyqt桌面开发--HelloWorld
- pyqt开发笔记
- PyQt实现一个简单的License系统(二)
- PyQt编程之模态与非模态对话框(二)
- PyQt标准框——QInputDialog(二)
- 基于PyQt(Python+QT)的gui程序开发
- 基于PyQt(Python+QT)的gui程序开发
- python --桌面开发pyqt安装(mac 环境)
- 基于PyQt(Python+QT)的gui程序开发 (转)
- 基于PyQt(Python+QT)的gui程序开发
- 二、pyqt+pycharm的安装
- 学习PyQt (1)
- pyqt基础教程(一)
- ffmpeg常用基本命令(转)
- nginx 无 ngx_cache_purge 模块时的刷新方法
- DataXceiver error processing unknown operation src: /127.0.0.1:36479 dst: /127.0.0.1:50010处理
- WPF 如何在代码中设置显示所选 language 的值
- cryptAcquireContext函数
- PyQt开发(二)
- Accessibility辅助控制类
- 全志A20编译&调试笔记
- VS ToolBar怎样删除按钮?
- linux下shell获取时间date的写法,日期加减,用date获得前一天的日期
- 关于几个正则表达式
- 微信开发之通过代理调试本地项目
- jQuery选择器总结
- 简单实现强大的加密功能——CryptoAPI