【问题标题】:How can an image to be displayed on a qdialog?如何在 qdialog 上显示图像?
【发布时间】:2014-11-28 18:10:43
【问题描述】:

请帮忙看一下这段代码,因为我不太明白这个概念。 我通过单击 qwidget 上的按钮来启动一个对话框。 我还想通过单击对话框上的不同按钮 (img_btn) 在上述 qdialog 上显示图像。 我在下面添加了一些代码:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys

class BasicWidget(QWidget):
    def __init__(self, parent=None):
        super(BasicWidget, self).__init__()

        layout = QVBoxLayout()
        self.btn = QPushButton('Show Dialog')
        layout.addWidget(self.btn)
        self.setLayout(layout)
        self.show()

        self.btn.clicked.connect(self.showpic)

    def showpic(self):
        imgshow = PaintPicture()

class PaintPicture(QDialog):
    def __init__(self, parent=None):
        super(PaintPicture, self).__init__()

        layout = QVBoxLayout()
        self.img_btn = QPushButton('Enter')
        layout.addWidget(self.img_btn)

        filename = r'\\some\basic\picture.jpg'
        image = QImage(filename )

        self.imageLabel = QLabel()
        self.imageLabel.setPixmap(QPixmap.fromImage(image))

        layout.addWidget(self.imageLabel)

        self.setLayout(layout)
        self.show()

if __name__ =="__main__":
    app = QApplication(sys.argv)
    widget = BasicWidget()
    sys.exit(app.exec_())

【问题讨论】:

    标签: pyqt qwidget qdialog pixmap


    【解决方案1】:

    首先你的代码有两个错误:

    1. imgshow = PaintPicture() 应该是self.imgshow = PaintPicture()

    2. 路径不适用于我这样 filename = r'\\some\basic\picture.jpg' ,但它可以这样工作:filename = r'./some/basic/picture.jpg'

    现在,如果我理解,您想打开只有“输入”按钮的对话框。当您按下该按钮时,您希望图像显示在按钮下方的同一对话框中吗?如果是这样,这是代码:

    from PyQt4.QtCore import *
    from PyQt4.QtGui import *
    import sys
    
    class BasicWidget(QWidget):
        def __init__(self, parent=None):
            super(BasicWidget, self).__init__()
    
            layout = QVBoxLayout()
            self.btn = QPushButton('Show Dialog')
            layout.addWidget(self.btn)
            self.setLayout(layout)
            self.show()
    
            self.btn.clicked.connect(self.showpic)
    
        def showpic(self):
            self.imgshow = PaintPicture()
    
    class PaintPicture(QDialog):
        def __init__(self, parent=None):
            super(PaintPicture, self).__init__()
    
            layout = QVBoxLayout()
            self.img_btn = QPushButton('Enter')
            self.img_btn.clicked.connect(self.showImage)
            layout.addWidget(self.img_btn)
    
            self.setLayout(layout)
            self.show()
    
        def showImage(self):
            filename = r'./some/basic/picture.jpg'
            image = QImage(filename )
    
            self.imageLabel = QLabel()
            self.imageLabel.setPixmap(QPixmap.fromImage(image))
    
            layout = self.layout()
            layout.addWidget(self.imageLabel)
    
    if __name__ =="__main__":
        app = QApplication(sys.argv)
        widget = BasicWidget()
        sys.exit(app.exec_())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      相关资源
      最近更新 更多