错误:self.START.clicked.connect(self.StartClicked)
AttributeError:“代码”对象没有属性“ StartClicked”
这是我的代码。 我不知道这段代码在哪里错了,请您检查一下并纠正我哪里错了。
当我尝试在不使用GUI的情况下运行代码时,它可以正常工作,但是在使用QT时,它给了我这个错误。
import sys
import cv2
import datetime
from PyQt5.QtWidgets import QApplication ,QDialog
from PyQt5.uic import loadUi
from PyQt5.QtGui import QImage,QPixmap
from PyQt5.QtCore import pyqtSlot
class code(QDialog):
def __init__(self):
super(code,self).__init__()
loadUi('letst.ui',self)
self.logic =0
self.START.clicked.connect(self.StartClicked)
self.STOP.clicked.connect(self.StopClicked)
@pyqtSlot()
def StartClicked(self):
self.logic=1
fourcc = cv2.VideoWriter_fourcc(*'XVID')
date=datetime.datetime.now()
cap = cv2.VideoCapture(1)
out= cv2.VideoWriter('E:/project/videos/rec_%s%s%s%s%s%s.mp4' %(date.year,date.month,date.day,date.hour,date.minute,date.second),fourcc,20.0,(640,480))
while (cap.isOpened()):
ret,frame = cap.read()
if ret == True:
self.displayImage(frame,1)
cv2.waitKey()
if (self.logic==1):
out.write(frame)
if (self.logic==0):
break
else:
print('return not found')
cap.release()
out.release()
cv2.destroyAllWindows()
def StopClicked(self):
self.logic=0
def displayImage(self, img,window=1):
qformat = QImage.Format_Indexed8
if len(img.shape)==3:
if (img.shape[2])==4:
qformat=QImage.Format_RGBA888
else:
qformat=QImage.Format_RGB888
img =QImage(img, img.shape[1],img.shape[0],qformat)
img =img.rgbSwapped()
self.imglabel.setPixmap(QPixmap.fromImage(img))
self.imgLabel.setAlignment(QtCore.Qt.AlignHCenter | Qtcore.Qt.AlignVCenter)
app=QApplication(sys.argv)
Window = code()
Window.show()
try:
sys.exit(app.exec_())
except:
print("exiting")
这是ui文件:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>780</width>
<height>555</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QLabel" name="imgLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>30</y>
<width>711</width>
<height>421</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::WinPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QPushButton" name="START">
<property name="geometry">
<rect>
<x>40</x>
<y>490</y>
<width>101</width>
<height>51</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>start</string>
</property>
</widget>
<widget class="QPushButton" name="STOP">
<property name="geometry">
<rect>
<x>180</x>
<y>490</y>
<width>101</width>
<height>51</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>stop</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>
答案 0 :(得分:1)
以下函数应在类内部:
def StartClicked(self):
def StopClicked(self):
def displayImage
请更正缩进并尝试。