0

请帮助这个代码,因为我真的不明白这个概念。我通过单击 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_())
4

1 回答 1

0

首先,您的代码中有两个错误:

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

  2. path 对我不起作用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_())
于 2014-12-03T07:34:00.917 回答