Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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
Python代码,用于根据请求使用pyqt4更改显示的图像_Qt_Python 2.7_Pyqt_Pyqt4 - Fatal编程技术网

Python代码,用于根据请求使用pyqt4更改显示的图像

Python代码,用于根据请求使用pyqt4更改显示的图像,qt,python-2.7,pyqt,pyqt4,Qt,Python 2.7,Pyqt,Pyqt4,我有以下代码使用pyQt显示am图像: app = QtGui.QApplication(sys.argv) window = QtGui.QMainWindow() window.setGeometry(opts.posx, opts.posy, opts.width, opts.height) pic = QtGui.QLabel(window) pic.setGeometry(5, 5, opts.width-10, opts.height-10) pixmap = QtGui.QPi

我有以下代码使用pyQt显示am图像:

app = QtGui.QApplication(sys.argv)
window = QtGui.QMainWindow()

window.setGeometry(opts.posx, opts.posy, opts.width, opts.height)

pic = QtGui.QLabel(window)
pic.setGeometry(5, 5, opts.width-10, opts.height-10)
pixmap = QtGui.QPixmap(opts.filename)
pixmap = pixmap.scaledToHeight(opts.height)
pic.setPixmap(pixmap)

window.show()
sys.exit(app.exec_())
我希望以类的形式来总结这段代码,并能够在运行时使用我不知道的信号、套接字和线程设置不同的映像。我会想象这样的情况:

class MyImage(object):
   def __init(self, args):
       some setup code
       self.pic = whatever
   def set_image(self, filename):
       pixmap = QtGui.QPixmap(opts.filename)
       pixmap = pixmap.scaledToHeight(opts.height)
       pic.setPixmap(pixmap)

对于原始代码,我只需调用
sys.exit(app.exec_389;())
,这会使代码“冻结”。但是我想从另一个运行的python代码发送一个信号(和一个文件名)。有没有关于如何轻松直接地处理此问题的建议?可能会覆盖app.exec方法?

类似的内容应该适合您:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)

from PyQt4 import QtGui, QtCore

class ImageChanger(QtGui.QWidget):    
    def __init__(self, images, parent=None):
        super(ImageChanger, self).__init__(parent)        

        self.comboBox = QtGui.QComboBox(self)
        self.comboBox.addItems(images)

        self.layout = QtGui.QVBoxLayout(self)
        self.layout.addWidget(self.comboBox)

class MyWindow(QtGui.QWidget):
    def __init__(self, images, parent=None):
        super(MyWindow, self).__init__(parent)
        self.label = QtGui.QLabel(self)

        self.imageChanger = ImageChanger(images)
        self.imageChanger.move(self.imageChanger.pos().y(), self.imageChanger.pos().x() + 100)
        self.imageChanger.show()
        self.imageChanger.comboBox.currentIndexChanged[str].connect(self.changeImage)

        self.layout = QtGui.QVBoxLayout(self)
        self.layout.addWidget(self.label)

    @QtCore.pyqtSlot(str)
    def changeImage(self, pathToImage):
        pixmap = QtGui.QPixmap(pathToImage)
        self.label.setPixmap(pixmap)


if __name__ == "__main__":
    import sys

    images = [  "/path/to/image/1",
                "/path/to/image/2",
                "/path/to/image/3",
                ]

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow(images)
    main.show()

    sys.exit(app.exec_())

像这样的东西应该适合你:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)

from PyQt4 import QtGui, QtCore

class ImageChanger(QtGui.QWidget):    
    def __init__(self, images, parent=None):
        super(ImageChanger, self).__init__(parent)        

        self.comboBox = QtGui.QComboBox(self)
        self.comboBox.addItems(images)

        self.layout = QtGui.QVBoxLayout(self)
        self.layout.addWidget(self.comboBox)

class MyWindow(QtGui.QWidget):
    def __init__(self, images, parent=None):
        super(MyWindow, self).__init__(parent)
        self.label = QtGui.QLabel(self)

        self.imageChanger = ImageChanger(images)
        self.imageChanger.move(self.imageChanger.pos().y(), self.imageChanger.pos().x() + 100)
        self.imageChanger.show()
        self.imageChanger.comboBox.currentIndexChanged[str].connect(self.changeImage)

        self.layout = QtGui.QVBoxLayout(self)
        self.layout.addWidget(self.label)

    @QtCore.pyqtSlot(str)
    def changeImage(self, pathToImage):
        pixmap = QtGui.QPixmap(pathToImage)
        self.label.setPixmap(pixmap)


if __name__ == "__main__":
    import sys

    images = [  "/path/to/image/1",
                "/path/to/image/2",
                "/path/to/image/3",
                ]

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow(images)
    main.show()

    sys.exit(app.exec_())

即使一段时间过去了,我也需要一个从外部获取文件名的代码,而不是从内部硬编码。我想将要显示的图像的文件名“发送”到代码中。@Alex这是一个简单的修复方法,请查看我的,即使一段时间过去了,我需要一个从外部获取文件名的代码,而不是从内部硬编码的代码。我想将要显示的图像的文件名“发送”到代码中。@Alex这是一个简单的解决方案,请查看我的