📄 b1.pyw
字号:
#!/usr/bin/env python# -*- coding: cp936 -*-from __future__ import divisionimport sysfrom PyQt4 import QtCore, QtGuiclass Window(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.proxyModel = QtGui.QSortFilterProxyModel() #(A)QSortFilterProxyModel提供从其他的model和view排序,过滤的操作,这是一个model来的 self.proxyModel.setDynamicSortFilter(True) # 动态的将两表关联起来,后者去关联前者 self.sourceGroupBox = QtGui.QGroupBox(u"原始模块") #设置box的名字,没关系 self.proxyGroupBox = QtGui.QGroupBox(u"查找\排序模块") self.sourceView = QtGui.QTreeView() #建立资源的树形目录 self.sourceView.setRootIsDecorated(False) #要不要显示根目录的,false是不要 self.sourceView.setAlternatingRowColors(True) #两行要不要用不同的颜色显示的 self.loadButton = QtGui.QPushButton(u"读入成绩") #添加的按钮 self.insertButton = QtGui.QPushButton(u"插入成绩") self.quitButton = QtGui.QPushButton(u"退出系统") self.saveButton = QtGui.QPushButton(u"保存成绩") self.studentOverallButton = QtGui.QPushButton(u"学生总评") self.classOverallButton= QtGui.QPushButton(u"班级总评") self.courseComboBox = QtGui.QComboBox() #添加的课程选择的 self.courseComboBox.addItem(u"光电子学") self.courseComboBox.addItem(u"激光原理") self.courseComboBox.addItem(u"软件设计") self.courseComboBox.addItem(u"半导体器件物理") self.courseLabel= QtGui.QLabel(u"选择课程:") self.courseLabel.setBuddy(self.courseComboBox) self.classOverallLineEdit= QtGui.QLineEdit() #班级总评的显示栏 self.classOverallLabel = QtGui.QLabel(u"班级总评:") self.classOverallLabel.setBuddy(self.classOverallLineEdit) self.proxyView = QtGui.QTreeView() #“代表”目录,创建了一个 self.proxyView.setRootIsDecorated(False) #要不要显示根目录的,false是不要 self.proxyView.setAlternatingRowColors(True) #两行要不要用不同的颜色显示的 self.proxyView.setModel(self.proxyModel) #用到(A),QTreeView.setModel (self, QAbstractItemModel model),第二个treeview是与用的是proxymodel #是只有后面一个参数,传入的是一个sortfilterproxymodel,将一个具体的model传入了 self.proxyView.setSortingEnabled(True) #这个表的排序功能,允许排序功能(B) self.sortCaseSensitivityCheckBox = QtGui.QCheckBox(u"排序区分大小写") #创建了一个QCheckBox对象,还没有定义动作,定义了名字 self.filterCaseSensitivityCheckBox = QtGui.QCheckBox(u"查找区分大小写") #同上 self.filterPatternLineEdit = QtGui.QLineEdit() #创建了一个单行输入的 self.filterPatternLabel = QtGui.QLabel(u"查询部分:") #创建一个label对象,写上名字 self.filterPatternLabel.setBuddy(self.filterPatternLineEdit) #这里设置了伙伴?有什么用处呢, 显现的是:如果将它去掉,则会显示&符号的。 self.filterSyntaxComboBox = QtGui.QComboBox() #建立一个下拉表单对象 self.filterSyntaxComboBox.addItem(u"正则表达式", QtCore.QVariant(QtCore.QRegExp.RegExp)) #给该对象加上item, 名字是,,addItem,是 #QComboBox.addItem (self, QString atext, QVariant auserData = QVariant()), #包含一个指定的userData(保存在Qt.UserRole里的) #QRegExp提供部分匹配用有规律的表达式 self.filterSyntaxComboBox.addItem(u"通配符", QtCore.QVariant(QtCore.QRegExp.Wildcard)) #很明显,这里的Wildcard和RegExp都是关键的字,是QRegExp里面的,所以是不能变动的,wildcard是指用通配符匹配 self.filterSyntaxComboBox.addItem(u"固定字符串", QtCore.QVariant(QtCore.QRegExp.FixedString)) #fixedstring是指用的是,固定字符串 self.filterSyntaxLabel = QtGui.QLabel(u"查询语法:") #前面加上标签 self.filterSyntaxLabel.setBuddy(self.filterSyntaxComboBox) #将标签设为伙伴 self.filterColumnComboBox = QtGui.QComboBox() #建一个combobox对象 self.filterColumnComboBox.addItem(u"按名字查询") #加上项目,共三个 self.filterColumnComboBox.addItem(u"按学号查询") self.filterColumnComboBox.addItem(u"按平时查询") self.filterColumnComboBox.addItem(u"按期中查询") self.filterColumnComboBox.addItem(u"按期末查询") self.filterColumnComboBox.addItem(u"按总评查询") self.filterColumnComboBox.addItem(u"按等级查询") self.filterColumnLabel = QtGui.QLabel(u"查询方式:") #加上lable self.filterColumnLabel.setBuddy(self.filterColumnComboBox) #设置伙伴 self.connect(self.filterPatternLineEdit, QtCore.SIGNAL('textChanged(const QString &)'), self.filterRegExpChanged) #对象,line输入端,信号,它的文本的变化,槽,filterRegExpChanged的函数 self.connect(self.filterSyntaxComboBox, QtCore.SIGNAL('currentIndexChanged(int)'), self.filterRegExpChanged) #对象,comboBox,变化,index的变化,(int型的返回),还是跟表达式函数链接,怎么两个都链接到一个函数呢 self.connect(self.filterColumnComboBox, QtCore.SIGNAL('currentIndexChanged(int)'), self.filterColumnChanged) #对于,下一个combobox,槽变成了,filtercolumnchanged()说明是栏变化了, self.connect(self.filterCaseSensitivityCheckBox, QtCore.SIGNAL('toggled(bool)'), self.filterRegExpChanged) #当被,选定后,也是指向filter函数的槽 self.connect(self.sortCaseSensitivityCheckBox, QtCore.SIGNAL('toggled(bool)'), self.sortChanged) #指向的是sortchanged函数 self.connect(self.quitButton, QtCore.SIGNAL('clicked()'), self.close) self.connect(self.classOverallButton, QtCore.SIGNAL('clicked()'), self.classOverall) self.connect(self.insertButton, QtCore.SIGNAL('clicked()'), self.insertScore) sourceLayout = QtGui.QGridLayout() #下面是对layout的指定,就是这样的,layout的意思是布局 sourceLayout.addWidget(self.sourceView,1,0,1,8) #sourceLayout.addWidget(self.loadButton,2,0) sourceLayout.addWidget(self.insertButton,2,0,1,2) #ourceLayout.addWidget(self.saveButton,2,2) sourceLayout.addWidget(self.studentOverallButton,2,2,1,2) sourceLayout.addWidget(self.classOverallButton,2,4,1,2) sourceLayout.addWidget(self.quitButton,2,6,1,2) sourceLayout.addWidget(self.courseLabel,0,0) sourceLayout.addWidget(self.courseComboBox,0,1,1,2) sourceLayout.addWidget(self.classOverallLabel,0,4) sourceLayout.addWidget(self.classOverallLineEdit,0,5,1,2) self.sourceGroupBox.setLayout(sourceLayout) #QGridLayout.addWidget (self, QWidget, int row, int column, int rowSpan, int columnSpan, Qt.Alignment = 0) #设置的是行,列,行跨度,列跨度,有了这些知识这一整部分的知识就完整了
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -