my function won't work when the slider
value changed i don't know why ? it's my first time using PyQt5
.
from PIL.ImageQt import Image, ImageQt
from PIL import ImageEnhance
from PyQt5.QtWidgets import (QApplication, QDialog, QGridLayout,
QLabel, QPushButton, QGroupBox,
QSlider, QVBoxLayout, QFileDialog)
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QIcon
class MainWindow(QDialog):
def __init__(self):
super(MainWindow,self).__init__()
self.originalPalette = QApplication.palette()
# self.setAcceptDrops(True)
self.createTopGroupBox()
self.createBottomGroupBox()
# self.color("blue")
mainLayout = QGridLayout()
mainLayout.addWidget(self.topGroupBox, 0, 0)
mainLayout.addWidget(self.bottomGroupBox, 1, 0)
#mainLayout.setRowStretch(1, 1)
#mainLayout.setRowStretch(2, 1)
#mainLayout.setColumnStretch(0, 1)
#mainLayout.setColumnStretch(1, 1)
self.setLayout(mainLayout)
self.setWindowTitle("Photo Editor")
self.resize(800, 800)
def createTopGroupBox(self):
self.topGroupBox = QGroupBox()
openImgButton = QPushButton("Open Image")
openImgButton.clicked.connect(self.getImage)
self.label = QLabel("Your Photo")
layout = QVBoxLayout()
layout.addWidget(openImgButton)
layout.addWidget(self.label)
layout.addStretch(1)
self.topGroupBox.setLayout(layout)
def getImage(self):
global fname
fname = QFileDialog.getOpenFileName(self, 'Open file',
'c:\ ', "Image files (*.jpeg *.jpg *.gif *.bmp *.png))")
imagePath = fname[0]
#pixmap = QPixmap(imagePath)
self.image = Image.open(imagePath)
self.qimage = ImageQt(self.image)
self.label.setPixmap(QPixmap.fromImage(self.qimage))
self.resize(self.qimage.width(), self.qimage.height())
def createBottomGroupBox(self):
self.bottomGroupBox = QGroupBox()
self.sliderBrightness = QSlider(Qt.Horizontal, self)
brightnessLabel = QLabel("Brightness:")
brightnessLabel.setBuddy(self.sliderBrightness)
self.sliderBrightness.setTickPosition(QSlider.TicksBelow)
self.sliderBrightness.setTickInterval(1)
self.sliderBrightness.setValue(100)
self.sliderBrightness.setMinimum(0)
self.sliderBrightness.setMaximum(200)
self.brightnessValueLabel = QLabel("1")
self.sliderContrast = QSlider(Qt.Horizontal, self)
contrastLabel = QLabel("Contrast:")
contrastLabel.setBuddy(contrastLabel)
self.sliderContrast.setValue(1)
self.sliderContrast.setMinimum(0)
self.sliderContrast.setMaximum(2)
self.contrastValueLabel = QLabel("1")
sliderSharpness = QSlider(Qt.Horizontal, self)
sharpnessLabel = QLabel("Sharpness:")
sharpnessLabel.setBuddy(sharpnessLabel)
sliderSharpness.setValue(1)
sliderSharpness.setMinimum(0)
sliderSharpness.setMaximum(2)
self.sharpnessValueLabel = QLabel("1")
savePushButton = QPushButton("Save")
savePushButton.clicked.connect(self.saveImage("image.png", "PNG"))
self.sliderBrightness.valueChanged.connect(self.valueChangeBrightness)
self.sliderContrast.valueChanged.connect(self.valueChangeContrast)
sliderSharpness.valueChanged.connect(self.valueChangeSharpness)
layout = QVBoxLayout()
layout.addWidget(brightnessLabel)
layout.addWidget(self.sliderBrightness, 0)
layout.addWidget(self.brightnessValueLabel)
layout.addWidget(contrastLabel)
layout.addWidget(self.sliderContrast, 1)
layout.addWidget(sharpnessLabel)
layout.addWidget(sliderSharpness, 2)
layout.addWidget(savePushButton, 3)
self.bottomGroupBox.setLayout(layout)
def saveImage(self, fileName, fileFormat):
self.editImage.save(fileName, fileFormat)
def valueChangeBrightness(self, sliderValue):
factor = float(sliderValue)/100
enhancer_object = ImageEnhance.Brightness(self.image)
self.editImage = enhancer_object.enhance(factor)
self.brightnessValueLabel.setText(str(self.sliderBrightness.value()))
def valueChangeContrast(self, factor):
enhancer_object = ImageEnhance.Contrast(self.image)
enhancer_object.enhance(factor)
def valueChangeSharpness(self, factor):
enhancer_object = ImageEnhance.Sharpness(self.image)
enhancer_object.enhance(factor)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())