如何在 PyQt4 的控件上显示图片?
我想使用 PyQt4 在表单上显示图片。
这是我的代码:
import sys
from PyQt4 import QtGui, QtCore
class myWindow(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
#The setGeometry method is used to position the control.
#Order: X, Y position - Width, Height of control.
self.resize(500,350)
self.center()
self.setWindowTitle("Sergio's QT Application.")
self.setWindowIcon(QtGui.QIcon('menuScreenFolderShadow.png'))
self.setToolTip('<i>Welcome</i> to the <b>first</b> app ever!')
QtGui.QToolTip.setFont(QtGui.QFont('Helvetica', 12))
self.txtFirstName = QtGui.QLineEdit('', self)
self.txtFirstName.setGeometry(35, 35, 150, 20)
self.txtLastName = QtGui.QLineEdit('', self)
self.txtLastName.setGeometry(35, 60, 150, 20)
self.pictureA = QtGui.QIcon("C:\Users\Sergio.Tapia\Downloads\Palm.png")
self.pictureA.setGeometry(128,128, 200, 200)
btnSubmit = QtGui.QPushButton('Say hello.', self)
btnSubmit.setGeometry(340, 250, 150, 35)
self.connect(btnSubmit, QtCore.SIGNAL("clicked()"), self.clicked)
btnQuit = QtGui.QPushButton('Exit Application', self)
btnQuit.setGeometry(340, 300, 150, 35)
self.connect(btnQuit, QtCore.SIGNAL('clicked()'),
QtGui.qApp, QtCore.SLOT('quit()'))
def clicked(self):
QtGui.QMessageBox.about(self, "Just dropped by to say hi!", "Welcome to this tutorial %s %s!" % (
self.txtFirstName.text(), self.txtLastName.text()))
def center(self):
screen = QtGui.QDesktopWidget().screenGeometry()
size = self.geometry()
self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)
app = QtGui.QApplication(sys.argv)
mainForm = myWindow()
mainForm.show()
sys.exit(app.exec_())
它说:
回溯(最近一次调用最后一次):
文件 “C:\ Users \ Sergio.Tapia \ Documents \ NetBeansProjects \ PyQTTests \ src \ pyqttests.py”, 第 47 行,在 mainForm = myWindow() 文件“C:\Users\Sergio.Tapia\Documents\NetBeansProjects\PyQTTests\src\pyqttests.py”, 第 25 行,在 init 中 self.pictureA.setGeometry(128,128, 200, 200) AttributeError: 'QIcon' 对象没有属性“setGeometry”
如果我删除该 setGeometry 行,应用程序将启动,但图片不会显示在任何地方。感谢您的帮助!
I'd like to display a picture on my form using PyQt4.
Here is my code:
import sys
from PyQt4 import QtGui, QtCore
class myWindow(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
#The setGeometry method is used to position the control.
#Order: X, Y position - Width, Height of control.
self.resize(500,350)
self.center()
self.setWindowTitle("Sergio's QT Application.")
self.setWindowIcon(QtGui.QIcon('menuScreenFolderShadow.png'))
self.setToolTip('<i>Welcome</i> to the <b>first</b> app ever!')
QtGui.QToolTip.setFont(QtGui.QFont('Helvetica', 12))
self.txtFirstName = QtGui.QLineEdit('', self)
self.txtFirstName.setGeometry(35, 35, 150, 20)
self.txtLastName = QtGui.QLineEdit('', self)
self.txtLastName.setGeometry(35, 60, 150, 20)
self.pictureA = QtGui.QIcon("C:\Users\Sergio.Tapia\Downloads\Palm.png")
self.pictureA.setGeometry(128,128, 200, 200)
btnSubmit = QtGui.QPushButton('Say hello.', self)
btnSubmit.setGeometry(340, 250, 150, 35)
self.connect(btnSubmit, QtCore.SIGNAL("clicked()"), self.clicked)
btnQuit = QtGui.QPushButton('Exit Application', self)
btnQuit.setGeometry(340, 300, 150, 35)
self.connect(btnQuit, QtCore.SIGNAL('clicked()'),
QtGui.qApp, QtCore.SLOT('quit()'))
def clicked(self):
QtGui.QMessageBox.about(self, "Just dropped by to say hi!", "Welcome to this tutorial %s %s!" % (
self.txtFirstName.text(), self.txtLastName.text()))
def center(self):
screen = QtGui.QDesktopWidget().screenGeometry()
size = self.geometry()
self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)
app = QtGui.QApplication(sys.argv)
mainForm = myWindow()
mainForm.show()
sys.exit(app.exec_())
It says that:
Traceback (most recent call last):
File
"C:\Users\Sergio.Tapia\Documents\NetBeansProjects\PyQTTests\src\pyqttests.py",
line 47, in
mainForm = myWindow() File "C:\Users\Sergio.Tapia\Documents\NetBeansProjects\PyQTTests\src\pyqttests.py",
line 25, in init
self.pictureA.setGeometry(128,128, 200, 200) AttributeError: 'QIcon'
object has no attribute 'setGeometry'
If I remove that setGeometry line, the application launches but the picture isn't displayed anywhere. Thanks for the help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有很多方法,例如使用 QPixmap 类。我再次鼓励您查看 PyQt 提供的示例。例如,
examples\animation\appchooser\
或examples\widgets\icons\
There are many ways, for example using the
QPixmap
class. Once again, I encourage you to take a look at the examples available with PyQt. For example,examples\animation\appchooser\
, orexamples\widgets\icons\