Python PyQt4, как открыть изображение с помощью QFileDialog

Мне нужно написать программу с возможностью открытия изображения из файла. Я должен использовать QFileDialog и отображать изображение в QLabel, используя QPixmap. Я могу использовать их по отдельности, но мне не удалось их совместить. Я думаю, что мне нужно взять имя моего изображения из dlg.selectedFiles, но я не знаю, как выбрать момент, когда в нем есть полезные данные. Нужно ли мне делать цикл в моей основной программе и постоянно проверять, есть ли изображение для открытия? Могу ли я отправить сигнал на свой лейбл, используя openAction.triggered.connect(...)?

from PyQt4 import QtGui
import sys

class MainWindow(QtGui.QMainWindow):

    def __init__(self, parent = None):
        super(MainWindow, self).__init__(parent)
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('File')
        dlg = QtGui.QFileDialog(self)       
        openAction = QtGui.QAction('Open', self)  
        openAction.triggered.connect(dlg.open)     
        fileMenu.addAction(openAction)
        #label = QtGui.QLabel(self)
        #pixmap = QtGui.QPixmap('')
        #label.setPixmap(pixmap)

def main():
    app = QtGui.QApplication(sys.argv)
    win = MainWindow()
    win.show()
    app.exec_()

if __name__ == '__main__':
    sys.exit(main()) 

person Daedan    schedule 27.11.2015    source источник


Ответы (1)


Вам нужно сделать свой собственный слот и подключить его к сигналу openAction.
В вашей функции __init__ выполните:

openAction.triggered.connect(self.openSlot)  

В вашем классе MainWindow определите следующую функцию:

def openSlot(self):
    # This function is called when the user clicks File->Open.
    filename = QtGui.QFileDialog.getOpenFileName()
    print(filename)
    # Do your pixmap stuff here.
person jonie83    schedule 29.11.2015