[英]Pyqt5 resize image viewer size and add textbox next to it
我通過拖放創建了一個 pyqt5 window。 我需要執行一些操作並且需要在它旁邊的文本框中更新結果。
截至目前我完成了一半,我只需要添加文本框。 怎么做?
預期 output
代碼:
import sys
import os
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QPushButton
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
class ImageLabel(QLabel):
def __init__(self):
super().__init__()
self.setAlignment(Qt.AlignCenter)
self.setText('\n\n Drop Image Here \n\n')
self.setStyleSheet('''
QLabel{
border: 4px dashed #aaa
}
''')
def setPixmap(self, image):
super().setPixmap(image)
class AppDemo(QWidget):
def __init__(self):
super().__init__()
self.resize(600, 400)
self.setAcceptDrops(True)
mainLayout = QVBoxLayout()
self.photoViewer = ImageLabel()
mainLayout.addWidget(self.photoViewer)
self.detect = QPushButton('Detect This !')
mainLayout.addWidget(self.detect)
self.detect.clicked.connect(self.hello)
self.setLayout(mainLayout)
def dragEnterEvent(self, event):
if event.mimeData().hasImage:
event.accept()
else:
event.ignore()
def dragMoveEvent(self, event):
if event.mimeData().hasImage:
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasImage:
event.setDropAction(Qt.CopyAction)
self.file_path = event.mimeData().urls()[0].toLocalFile()
self.set_image(self.file_path)
event.accept()
else:
event.ignore()
def set_image(self, file_path):
pixmap = QPixmap(file_path)
pixmap= pixmap.scaledToWidth(250)
self.photoViewer.setPixmap(pixmap)
print(file_path)
def hello(self):
print("hello")
app = QApplication(sys.argv)
demo = AppDemo()
demo.show()
sys.exit(app.exec_())
創建另一個QVBoxLayout
,將您需要的內容放入其中。 將兩個QVBoxLayout
連接到QHBoxLayout
。
import sys
#import os
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, \
QPushButton, QTextEdit, QHBoxLayout
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
class ImageLabel(QLabel):
def __init__(self):
super().__init__()
self.setAlignment(Qt.AlignCenter)
self.setText('\n\n Drop Image Here \n\n')
self.setStyleSheet('''
QLabel{
border: 4px dashed #aaa
}
''')
def setPixmap(self, image):
super().setPixmap(image)
class AppDemo(QWidget):
def __init__(self):
super().__init__()
self.resize(680, 400)
self.setAcceptDrops(True)
vLayout_1 = QVBoxLayout()
self.photoViewer = ImageLabel()
vLayout_1.addWidget(self.photoViewer)
self.detect = QPushButton('Detect This !')
vLayout_1.addWidget(self.detect)
self.detect.clicked.connect(self.hello)
# self.setLayout(mainLayout)
self.textEdit = QTextEdit()
self.btn_clear = QPushButton('Clear')
vLayout_2 = QVBoxLayout()
vLayout_2.addWidget(self.textEdit)
vLayout_2.addWidget(self.btn_clear)
mainLayout = QHBoxLayout(self)
mainLayout.addLayout(vLayout_1, stretch=3)
mainLayout.setSpacing(20)
mainLayout.addLayout(vLayout_2, stretch=2)
def dragEnterEvent(self, event):
if event.mimeData().hasImage:
event.accept()
else:
event.ignore()
def dragMoveEvent(self, event):
if event.mimeData().hasImage:
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasImage:
event.setDropAction(Qt.CopyAction)
self.file_path = event.mimeData().urls()[0].toLocalFile()
self.set_image(self.file_path)
event.accept()
else:
event.ignore()
def set_image(self, file_path):
pixmap = QPixmap(file_path)
pixmap= pixmap.scaledToWidth(250)
self.photoViewer.setPixmap(pixmap)
print(file_path)
def hello(self):
print("hello")
app = QApplication(sys.argv)
demo = AppDemo()
demo.show()
sys.exit(app.exec_())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.