Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 使用PyQt4的AttributeError_Eclipse_Python 3.x_Pyqt4 - Fatal编程技术网

Eclipse 使用PyQt4的AttributeError

Eclipse 使用PyQt4的AttributeError,eclipse,python-3.x,pyqt4,Eclipse,Python 3.x,Pyqt4,每当我在eclipse中的pyqt4中运行以下代码时,就会出现错误: AttributeError:“str”对象没有属性“toInt” 我的代码如下: import sys from PyQt4 import QtGui,QtCore class Line(QtGui.QWidget): def __init__(self): super(Line,self).__init__() self.x1=-1 self.x2=-1

每当我在eclipse中的pyqt4中运行以下代码时,就会出现错误:

AttributeError:“str”对象没有属性“toInt”

我的代码如下:

import sys
from PyQt4 import QtGui,QtCore
class Line(QtGui.QWidget):
    def __init__(self):
        super(Line,self).__init__()
        self.x1=-1
        self.x2=-1
        self.y1=-1
        self.y2=-1
        self.initUI()

    def initUI(self):

        b1=QtGui.QPushButton("Draw Line",self)
        b1.setGeometry(250,25,100,30)
        b1.clicked.connect(self.repaint)
        l1=QtGui.QLabel("x1 :",self)
        l2=QtGui.QLabel("x2 :",self)
        l3=QtGui.QLabel("y1 :",self)
        l4=QtGui.QLabel("y2 :",self)
        l5=QtGui.QLabel(self)
        l1.setGeometry(100,250,100,100)
        l2.setGeometry(250,250,100,100)
        l3.setGeometry(100,350,100,100)
        l4.setGeometry(250,350,100,100)
        l5.setGeometry(1000,1000,1000,1000)
        self.x_1=QtGui.QLineEdit(self)
        self.x_2=QtGui.QLineEdit(self)
        self.y_1=QtGui.QLineEdit(self)
        self.y_2=QtGui.QLineEdit(self)
        self.x_1.setGeometry(130,275,100,50)
        self.x_2.setGeometry(280,272,100,50)
        self.y_1.setGeometry(130,375,100,50)
        self.y_2.setGeometry(280,375,100,50)
        self.r1=QtGui.QRadioButton("Thin Line",self)
        self.r1.move(100,25)
        self.r2=QtGui.QRadioButton("Thick Line",self)
        self.r2.move(100,55)
        self.r3=QtGui.QRadioButton("Dotted Line",self)
        self.r3.move(100,85)
        self.setGeometry(150,150,500,500)
        self.setWindowTitle("Line")
        self.show()

    def paintEvent(self,e):
        self.qp=QtGui.QPainter()
        self.qp.begin(self)
        self.draw(self.qp)
        self.qp.end()

    def draw(self,qp):
        self.x1=self.x_1.text().toInt()[0]
        self.x2=self.x_2.text().toInt()[0]
        self.y1=self.y_1.text().toInt()[0]
        self.y2=self.y_2.text().toInt()[0]

        pen=QtGui.QPen(QtCore.Qt.black,1)
        pen.setStyle(QtCore.Qt.SolidLine)

        if self.r1.isChecked():
            pen.setStyle(QtCore.Qt.SolidLine)
        if self.r2.isChecked():
            pen.setWidth(2)
        if self.r3.isChecked():
            pen.setStyle(QtCore.Qt.DashLine)
        qp.setPen(pen)

        qp.drawLine(self.x1,self.y1,self.x2,self.y2)

def main():
    app=QtGui.QApplication(sys.argv)
    l1=Line()
    sys.exit(app.exec_())

if __name__=='__main__':
    main()

使用Python 3,默认情况下您将获得以下版本的版本2:

PyQt4的QVariant API的版本2将自动转换 QVariant返回到正确类型的Python对象

其他类型也会发生同样的情况,比如自动转换为
str
QString

在下面的行中:

self.x=QtGui.QLineEdit(self)
self.x.text().toInt()[0]
toInt
QString
的一种方法。在API的版本1中,它将其转换为int。在版本2中,
self.x.text()
首先转换为
str
,该方法没有
toInt
方法:您会得到一个错误

对于版本2,您可以使用:

int(self.x.text())
但您也可以将API设置为版本1,请参见:


这些问题可能有助于回答您的问题。1.只有在Eclipse中运行时才会发生这种情况吗?2.是否有带有错误消息的回溯跟踪?
import sip
sip.setapi('QString', 1)
from PyQt4 import QtCore