簡體   English   中英

Pyqt5 調整圖像查看器大小並在其旁邊添加文本框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM