亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

當槽函數的默認參數為 None 時,PySide2 的行為與 PySide 不同

當槽函數的默認參數為 None 時,PySide2 的行為與 PySide 不同

qq_花開花謝_0 2023-02-15 15:27:42
下面的代碼適用于 PySide,但不適用于 PySide2:當操作被觸發時 (Ctrl+S),函數saveResults被調用filename=False,而不是None我所期望的(和 PySide 的情況一樣:您可以通過切換 import 語句來測試)。我想知道行為是否發生了變化,或者我的代碼中有什么需要修復的?(我知道我可以使用 lambda 技巧,我更好奇是 Slot 語法還是需要精度的連接)。import sys# PySide2 won't pop up the QFileDialogfrom PySide2.QtGui import *from PySide2.QtWidgets import *from PySide2.QtCore import Slot# # PySide works fine:# from PySide.QtGui import *# from PySide.QtCore import Slotclass MyWindow(QMainWindow):    def __init__(self):        QMainWindow.__init__(self)        self.fileMenu = self.menuBar().addMenu("&File")        act = QAction("Save results...", self)        act.triggered.connect(self.saveResults)  # <--- should call saveResults(None)        #act.triggered.connect(lambda: self.saveResults(None))   # fixes the issue        act.setShortcuts([QKeySequence.Save])        self.fileMenu.addAction(act)    @Slot()    def saveResults(self, filename=None):        print ('Calling saveResults, filename is', filename)        if filename is None:            (filename, selectedfilter) = QFileDialog.getSaveFileName(self,"Save results as ", ".", "NPY Files (*.npy);;Image files (*.png *.tif *.tiff *.bmp);;All files (*)")            # ... exit if cancel clicked        # finally save the file:        print('Saving', filename)qt_app = QApplication(sys.argv)app = MyWindow()app.show()qt_app.exec_()
查看完整描述

1 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

這似乎是一個錯誤,解決方法是通過關鍵字觸發連接:


# ...

self.fileMenu = self.menuBar().addMenu("&File")

act = QAction("Save results...", self, triggered=self.saveResults)

act.setShortcuts([QKeySequence.Save])

self.fileMenu.addAction(act)

# ...


查看完整回答
反對 回復 2023-02-15
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號