第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 PyQt5 中解決這個問題?

如何在 PyQt5 中解決這個問題?

函數(shù)式編程 2024-01-24 15:42:13
考慮下面給出的最低限度的例子class Main:    def __init__(self):        self.name=''        self.age=''    def setinfo(self):        self.name=input()        self.age=input()    def run(self):        self.startWin=QWidget()        self.setinfo()        dnd=DragDrop('Drop Photo here',self.startWin)        self.startWin.show()        sys.exit(app.exec_())    def showWin(self,file_path):        self.mainWin=QWidget()        self.label1=QLabel(self.name,self.mainWin)        self.label2=QLabel(self.age,self.mainWin)        self.photo = QLabel(self.mainWin)        pixmap = QPixmap(file_path)        self.photo.setPixmap(pixmap)        self.mainWin.show()class DragDrop(QLabel):    def __init__(self, title, parent):        super().__init__(title, parent)        self.setAcceptDrops(True)    def dragEnterEvent(self, event):        if event.mimeData().hasImage:            event.accept()        else:            event.ignore()        def dropEvent(self, event):        file_path = event.mimeData().urls()[0].toLocalFile()        self.showWin(file_path)app = QApplication([])instance=Main()instance.run()現(xiàn)在,我想要的是將文件放入 dnd(拖放 QLabel)后立即調用 Main 類的 showWin 函數(shù),以顯示該人的姓名、年齡和照片。但是,當然,來自 DragDrop 類的調用將不起作用,因為 showWin 函數(shù)屬于 Main 類。我什至無法創(chuàng)建該類的對象然后調用它,因為我想在已經(jīng)運行的實例中進行更改。我該如何克服這種情況?我已經(jīng)嘗試過的:我嘗試將可變數(shù)據(jù)類型(如列表)傳遞到 DragDrop 類的構造函數(shù)中,并對其進行更改。但問題是,需要再次單擊運行函數(shù)中的某個按鈕才能使用該路徑并調用 showWin。第二種解決方案是通過__get__在 run 函數(shù)中使用方法直接覆蓋 QLabel 對象的事件方法(不形成類)。但我認為這太特定于語言了。我正在嘗試為此找到一個基于面向對象的通用解決方案。
查看完整描述

1 回答

?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

您可以使用自定義信號。在 DragDrop 中創(chuàng)建信號并在 中發(fā)出dropEvent:


image_dropped = pyqtSignal(str)

def dropEvent(self, event):

    file_path = event.mimeData().urls()[0].toLocalFile()

    self.image_dropped.emit(file_path)

將信號連接到showWinMain:


def run(self):

    self.startWin=QWidget()

    self.setinfo()

    dnd=DragDrop('Drop Photo here',self.startWin)

    dnd.image_dropped.connect(self.showWin)

    self.startWin.show()

    sys.exit(app.exec_())


查看完整回答
反對 回復 2024-01-24
  • 1 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號