pyqt 调用自定义函数中表格被修改过用什么函数来判断

实例7 表格的使用 - PyQt4 精彩实例分析_Linux编程_Linux公社-Linux系统门户网站
你好,游客
PyQt4 精彩实例分析
实例7 表格的使用
来源:Linux社区&
作者:chumpklutz
制作统计软件时经常会使用表格将资料列出,或是通过表格进行资料的设置,在Qt中可以使用QTableWidget实现一个表格。本实例演示如何使用表格,并在表格中嵌入控件。如下图所示为“表格的使用”对话框。
QTableWidget类提供了一个灵活的和可编辑的表格控件,包含很多API,可以处理标题,行列,单元格和选中区域,QTableWidget可以嵌入编辑框或显示控件,并可通过拖动控制柄调节各单元格的大小。表格的每一项可以定义成不同的属性,可以显示文本,也可以插入控件,这样给表格的使用带来了很好的扩展性。
本实例的实现代码如下:
from&PyQt4.QtGui&import&*&&
from&PyQt4.QtCore&import&*&&
import&sys&&
QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))&&
class&MyTable(QTableWidget):&&
&&&&def&__init__(self,parent=None):&&
&&&&&&&&super(MyTable,self).__init__(parent)&&
&&&&&&&&self.setColumnCount(5)&&
&&&&&&&&self.setRowCount(2)&&
&&&&&&&&self.setItem(0,0,QTableWidgetItem(self.tr("性别")))&&
&&&&&&&&self.setItem(0,1,QTableWidgetItem(self.tr("姓名")))&&
&&&&&&&&self.setItem(0,2,QTableWidgetItem(self.tr("出生日期")))&&
&&&&&&&&self.setItem(0,3,QTableWidgetItem(self.tr("职业")))&&
&&&&&&&&self.setItem(0,4,QTableWidgetItem(self.tr("收入")))&&
&&&&&&&&lbp1=QLabel()&&
&&&&&&&&lbp1.setPixmap(QPixmap("image/4.gif"))&&
&&&&&&&&self.setCellWidget(1,0,lbp1)&&
&&&&&&&&twi1=QTableWidgetItem("Tom")&&
&&&&&&&&self.setItem(1,1,twi1)&&
&&&&&&&&dte1=QDateTimeEdit()&&
&&&&&&&&dte1.setDateTime(QDateTime.currentDateTime())&&
&&&&&&&&dte1.setDisplayFormat("yyyy/mm/dd")&&
&&&&&&&&dte1.setCalendarPopup(True)&&
&&&&&&&&self.setCellWidget(1,2,dte1)&&
&&&&&&&&cbw=QComboBox()&&
&&&&&&&&cbw.addItem("Worker")&&
&&&&&&&&cbw.addItem("Famer")&&
&&&&&&&&cbw.addItem("Doctor")&&
&&&&&&&&cbw.addItem("Lawyer")&&
&&&&&&&&cbw.addItem("Soldier")&&
&&&&&&&&self.setCellWidget(1,3,cbw)&&
&&&&&&&&sb1=QSpinBox()&&
&&&&&&&&sb1.setRange(1000,10000)&&
&&&&&&&&self.setCellWidget(1,4,sb1)&&
app=QApplication(sys.argv)&&
myqq=MyTable()&&
myqq.setWindowTitle("My&Table")&&
myqq.show()&&
app.exec_()&&
第18-20行在表格中插入一个QLabel控件,并设置QLabel的图形属性。
第21-22行设置表格单元的属性为文本显示。
第23-27行在表格中插入一个QDateTimeEdit控件,该控件可以编辑日期时间,setCalendarPopup()方法设置是否弹出日历编辑器。
第28-34行在表格中插入一个QComboBox控件,调用QTableWidget的setCellWidget()函数可在某个指定的表格单元格中插入一个控件,函数的前两个参数用于指定单元格的行,列号。
第35-37行在表格中插入一个QSpinBox控件。7
【内容导航】
相关资讯 & & &
& (07月22日)
& (10/16/:11)
& (06/24/:39)
& (06月27日)
& (06/24/:01)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
匿名 发表于 11Pyqt中使用threading.Thread,print()函数被阻塞。
我现在使用Pyqt中Phonon写一个简单的音乐播放程。
我想在播放的同时打印音乐当前的时间。
def check_if_delay(self):
while True:
print(self.m_media.currentTime(),end='
time.sleep(2)
def play(self, index):
self.delayedInit()
self.m_media.setCurrentSource(Phonon.MediaSource(index))
self.check_thread = threading.Thread(target=self.check_if_delay)
self.check_thread.setDaemon(True)
self.check_thread.start()
self.m_media.play()
当我player.play(index)时,音乐能播放,但是却没有打印。
当我强制中断音乐播放时,需要打印的时间却有都出来了。
请问各位改怎么实现边播放边打印时间。
2014年 10月23日
(681 威望)
请输入验证码:
[captcha placeholder]
或 后不会被要求输入验证码。
请输入验证码:
&&&& 或 后不会被要求输入验证码。
你有两个方案,第一,不用多线程,因为显示线程一定在主线程里,子线程获取数据了也没办法直接往显示线程里写,你可以设置一个1s的timer,在timeout的槽里做显示
第二,如果你使用多线程的话,请用信号和槽来进行数据同步,将子线程里的数值发个信号出来传递到主线程的槽里完成更新
2014年 10月23日
(627 威望)
2013年 9月8日
请输入验证码:
[captcha placeholder]
或 后不会被要求输入验证码。
提一个问题:
2014年 10月26日
(783 威望)
2014年 10月11日
(614 威望)
(792 威望)
(792 威望)
2015年 12月11日
(436 威望)
欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。2536人阅读
python(8)
qt常用函数使用方法
在pyqt4 中 dock 是一个镶嵌在主窗口 而又能拉出来成立一个独立窗口的控件 ,dock 是QDockWidget 的对象
dock=QDockWidget('title',self) #实例化一个dock title 为标题 self 为parent 因为QDockWidget 不添加到布局管理器中 所以我们需要传一个parent 给他
dock.setObjectName("dock") #设置dock的对象名称
dock.setAllowedAreas(Qt.LeftDockWidgetArea |Qt.RightDockWidgetArea) #设置dock只能在左边 或者右边显示
allowedareas 有Qt.LeftDockWidgetArea Qt.RightDockWidgetArea Qt.TopDockWidgetArea Qt.BottomDockWidgetArea Qt.AllDockWidgetAreas
dock.setWidget(QLabel) #添加一个label控件
dock.setFeatures(QDockWidget.NoDockWidgetFeatures) #设置dock是否可以关闭拉出等
参数还有 QDockWidget.DockWidgetClosable 可以关闭 DockWidgetMovable 可以移动
DockWidgetFloatable #可以独立出来 DockWidgetVerticalTitleBar 垂直显示标题 AllDockWidgetFeatures 除垂直标题以外 以上所有 NoDockWidgetFeatures
self.addDockWidget(Qt.RightDockWidget,dock) 添加dock到主窗口第一个参数为显示位置
PyQt4 在子窗口动态设置父窗口方法
1 采用apply方法
传递需要修改数据的引用给子对话框
&&&在子对话框apply按钮的插槽方法中发出一个信号,如 finshed
&&&接着在父窗口连接这个信号接着显示子窗口child.show()
记得在__init__方法下面写上self.setAttribute(Qt.WA_DeleteOnClose) 这句的作用是在子对话框close的时候把它删除 释放资源 (下面还有另一个方法 释放资源)
2 在父窗口定义一个 字窗口的 接口 如: self.child=None
然后实例子窗口赋给self.child 传递一个callback 函数
if self.child is None: # 这个方法不错
&&&&&slef.child=childDialog()
self.child.show()
self.child.raise_()
self.child.activateWindow()
下面是实例代码 父窗口
import sysfrom PyQt4.QtGui import *from PyQt4.QtCore import *import ModelDialoglive
class MainForm(QDialog):
def __init__(self,parent=None):&&&super(MainForm,self).__init__(parent)&&&self.child=None&&&self.table=QTableWidget()&&&self.table.setColumnCount(40)&&&self.table.setRowCount(30)&&&self.table.setWhatsThis("mantou")&&&#set Column tab title&&&#self.table.setHorizontalHeaderLabels(list(range(5,10)))&&&for i in range(0,5):&&&&for x in range(0,7):&&&&&item=QTableWidgetItem(str(i+x))&&&&&item.setTextAlignment(Qt.AlignLeft |Qt.AlignCenter)&&&&&item.setBackgroundColor(Qt.green)&&&&&self.table.setItem(x,i,item)
&&&fbutton=QPushButton("&F")&&&cbutton=QPushButton("&C")&&&lbutton=QPushButton("&L")&&&Vlayout=QHBoxLayout()&&&Vlayout.addWidget(fbutton)&&&Vlayout.addWidget(lbutton)&&&Vlayout.addWidget(cbutton)&&&Hlayout=QVBoxLayout()&&&Hlayout.addWidget(self.table)&&&Hlayout.addLayout(Vlayout)&&&self.setLayout(Hlayout)&&&self.setGeometry(200,300,500,400)&&&self.setWindowTitle("Table")&&&self.connect(lbutton,SIGNAL("clicked()"),self.liveChange)
def callback(self,c=0,r=0):&&&self.table.clear()&&&for i in range(0,c):&&&&for x in range(0,r):&&&&&item=QTableWidgetItem(str(i+x))&&&&&item.setTextAlignment(Qt.AlignLeft|Qt.AlignCenter)&&&&&item.setBackgroundColor(Qt.red)&&&&&self.table.setItem(x,i,item)
def liveChange(self):&&&if self.child==None:&&&&self.child=ModelDialoglive.liveDialog(self.callback,self)&&&self.child.show()
if __name__=="__main__":app=QApplication(sys.argv)mf=MainForm()mf.show()app.exec_()
import sysfrom PyQt4.QtGui import *from PyQt4.QtCore import *
class liveDialog(QDialog):def __init__(self,callback,parent=None):&&&super(liveDialog,self).__init__(parent)&&&self.callback=callback&&&C_MAX=10&&&R_MAX=15&&&self.c_edit=QLineEdit()&&&self.r_edit=QLineEdit()&&&layout=QHBoxLayout()&&&layout.addWidget(self.c_edit)&&&layout.addWidget(self.r_edit)&&&self.setLayout(layout)
&&&self.connect(self.c_edit,SIGNAL("textChanged(QString)"),self.updateUi)&&&self.connect(self.r_edit,SIGNAL("textEdited(QString)"),self.updateUi)
def updateUi(self,text):&&&c=self.c_edit.text()&&&r=self.r_edit.text()&&&if c and r:&&&&self.callback(int(c),int(r))PyQt4 QCheckBox 使用教程
setChecked(bool) 设置是否选择
isChecked() 返回bool
发出toggled(bool)信号
PyQt4 QTableWidget 使用教程
self.table=QTableWidget() #实例化
&&&self.table.setColumnCount(4) #设置列数
&&&self.table.setRowCount(6) #设置行数
&&&self.table.setWhatsThis("mantou") ###
self.table.setEditTriggers(QTableWidget.NoEditTriggers) #设置为不能编辑单元格&&&#set Column tab title&&&self.table.setHorizontalHeaderLabels(list(range(5,10)))
&&&self.table.setVerticalHeaderLabels(["a","d"] ) #设置 行title
self.table.setAlternatingRowColors(bool) #设置交替行颜色
&&&for i in range(0,5):&&&&for x in range(0,7):&&&&&&&&&item=QTableWidgetItem(str(i+x)) 实例一个item对象&&&&&&&&&item.setTextAlignment(Qt.AlignLeft |Qt.AlignCenter) 设置对齐方式&&&&&&&&item.setBackgroundColor(Qt.green) 设置背景&&&&&&&&self.table.setItem(x,i,item) 添加Item
PyQt4 QVBoxLayout QHBoxLayout QGridLayout 使用教程
pyqt4 的三个布局管理器
QHBoxLayout 水平布局 QVBoxLayout 垂直布局 QGridLayout 表格布局
以下g为表格布局 a b 为水平垂直布局任一个
a.addLayout(b) 添加b布局到a上
a.addSpacing(20) 添加20水平宽度的空白 b类型 垂直方向
a.addStretch(10) 添加一个固定长度的延伸
b.addWidget(QWidget) 添加一个QWidget 到布局
b.addStretchFactor(QWidget,20)
g.addLayout(a,0,2) 在第一行第三列添加一个水平布局
g.addWidget(QWidget,0,2,1,2) 在第一行第三列,占一行 两列 位置 添加一个QWidget
g.setRowStretch(1,20) 设置第二行的高度为20
g.setColumnStretch(1,20) 设置第二列的宽度为20
PyQt4 QListWidget 使用教程
listWidget = QListWidget() #实例化一个(item base)的列表
listWidget.addItem('dd') #添加一个项
listWidget.addItems([]) # 从序列中添加子项
listWidget.setDragEnabled(True) #设置拖拉
listWidget.sortItems() #排序
listWidget.setSortingEnabled(bool) #设置自动排序
listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) #设置选择模式
选择模式有:ExtendedSelection 按住ctrl多选, SingleSelection 单选 MultiSelection 点击多选 ContiguousSelection 鼠标拖拉多选
listWidget.setCurrentRow(0) 设置当前选择行 默认为-1
listWidget.count() #得到子项总数
listWidget.item(row).text() #得到第 row 行的内容 listWidget.item(row) 返回一个item 对象
listWidget.takeItem(row) #返回row 行的 所在的item 对象 可以用在 insertItem()中
listWidget.insertItem(2,item) #在第二行插入一项 item 可谓为一个listviewitem对象或者string
listWidget.setCurrentItem('dd') #设置'dd'为当前项
listWidget.selectedItems() 返回一个 包含item对象 的list 对象
修改item 的内容
item.setText('dsds') # 设置item的内容为dsds item为对象 可从 listWidget.item(row) takeItem(row) 得到
PyQt4 QInputDialog 使用教程
string, ok = QInputDialog.getText(self, '标题', '说明文字') #&&&显示一个标题为标题说明文字为说明问题的输入对话框!string 为输入的内容 ok 为点击的按钮
&&&&if ok and not string.isEmpty(): #如果点击了确定&&&输入了内容
PyQt4 QPushButton 使用教程
button = QPushButton('***) # 实例化一个text为***)的按钮
button.setFocusPolicy() #设置焦点样式 样式有:Qt.NoFocus: 无焦点,Qt.TabFocus:用tab切换焦点,Qt.ClickFocus:点击切换焦点,Qt.StrongFocus:貌似跟click一样 Qt.WheelFocus
button.setCheckable(True) #设置为开关按钮 toggle 就是按下按钮不会弹起
button.isChecked() 返回bool值 只有setCheckable()为true时有效
button.setShortcut('Ctrl+F') #设置快捷方式
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:156207次
积分:1920
积分:1920
排名:第15984名
转载:121篇
评论:11条
(1)(1)(5)(2)(4)(7)(3)(2)(1)(2)(11)(6)(8)(1)(5)(1)(1)(1)(7)(8)(17)(5)(25)

我要回帖

更多关于 怎么判断视频被修改过 的文章

 

随机推荐