我从 tkinter 切换到 PyQt5
. 作为练习,我想创建一个简单的图像编辑器也使用PIL
. 到目前为止,该程序只有Label
一个按钮可以调用文件选择对话框,并且在选择一个文件时,在7个图像中,仅显示一个图像Label
,在其他情况下,以下是错误: http: //mmolabel.ru/ wp-content/uploads/2018 /03/pamyat-ne-mozhet-byt-read.jpg
这是小部件代码
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(70, 40, 651, 391))
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(644, 560, 131, 23))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "Здесь будет фото"))
self.pushButton.setText(_translate("MainWindow", "Выберите изображение"))
这是逻辑文件,你需要运行它,并且从与第一个相同的目录中运行
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog
from pr_visual import Ui_MainWindow
import sys
from PIL import Image
from PIL.ImageQt import ImageQt
def opendialog():
dialog = QFileDialog()
fname = dialog.getOpenFileName(None, 'Open file', '/')[0]
img = Image.open(fname)
width = img.size[0]
height = img.size[1]
qimg = ImageQt(img)
width = img.size[0]
height = img.size[1]
pixmap = QtGui.QPixmap.fromImage(qimg)
ui.label.setGeometry(QtCore.QRect(0, 0, width, height))
ui.label.setPixmap(pixmap)
#Create main window
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(window)
window.setWindowTitle('PR')
window.show()
#Logic
ui.pushButton.clicked.connect( opendialog )
#mainloop
sys.exit(app.exec_())
您不需要任何额外的库。
我将为您提供: