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

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

單擊文件名時 PyQt5 QFileDialog 關(guān)閉

單擊文件名時 PyQt5 QFileDialog 關(guān)閉

牧羊人nacy 2023-04-18 15:26:35
我正在使用PyQt5 QFileDialog.getOpenFileName。在單擊“打開”按鈕之前,我希望該框保持打開狀態(tài)。但是,當(dāng)我在我的 Linux 系統(tǒng)上運行代碼時,單擊文件名時對話框立即關(guān)閉。在 Windows 系統(tǒng)上,該框按預(yù)期運行并保持打開狀態(tài),直到單擊“打開”按鈕。無論是否設(shè)置選項,結(jié)果都相同QFileDialog.DontUseNativeDialog。from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QFileDialogimport sysclass Main(QMainWindow):    def __init__(self):        super().__init__()        self.setWindowTitle("QFileDialog Test")        button = QPushButton("Click to open file")        button.setCheckable(True)        button.clicked.connect(self.open_file)        # Set the central widget of the Window.        self.setCentralWidget(button)    def open_file(self):        options = QFileDialog.Options()        options |= QFileDialog.DontUseNativeDialog        file_name, _ = QFileDialog.getOpenFileName(None, "Open File",            "", "Python Files (*.py);;Text Files (*.txt)",options=options)app = QApplication(sys.argv)window = Main()window.show()app.exec_()編輯:我退出 KDE 并開始一個 Openbox 會話,然后運行上面的代碼。QFileDialog 的行為如我所料,等待我單擊“打開”按鈕。這驗證了 KDE / KWin 是否存在問題,并且在其他窗口管理器下運行的代碼可能會正常工作。仍然不是一個真正的解決方案,但我現(xiàn)在比以前更了解情況。第二次編輯:我發(fā)現(xiàn)如果我將工作區(qū)行為 -> 一般行為 -> 單擊行為從單擊更改為雙擊,我的 QFileDialog 問題就會消失。不過,如何解決這個問題將是一個不同的話題。第三次編輯:向示例代碼添加了“QFileDialog.DontUseNativeDialog”選項。
查看完整描述

1 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗 獲得超2個贊

似乎 Qt 試圖尊重操作系統(tǒng)在其文件管理器中打開文件和文件夾的方式,即使在使用本機(jī)對話框時也是如此。這取決于SH_ItemView_ActivateItemOnSingleClick?樣式提示,繞過它的唯一方法是應(yīng)用代理樣式。

雖然您可以在其內(nèi)部將樣式應(yīng)用于 QFileDialog 的視圖__init__(只要您使用本機(jī)對話框),但您使用的是靜態(tài)方法,因此您只能通過將樣式設(shè)置為整個 QApplication 來實現(xiàn)。

請注意,與樣式表、調(diào)色板和字體不同,樣式不會傳播到子部件,它們始終使用 QApplication 樣式(或為它們手動設(shè)置的樣式)。

class SingleClickWorkaroundProxy(QProxyStyle):

? ? def styleHint(self, hint, option, widget, data):

? ? ? ? if hint == self.SH_ItemView_ActivateItemOnSingleClick:

? ? ? ? ? ? return False

? ? ? ? return super().styleHint(hint, option, widget, data)


# ...

app = QApplication(sys.argv)

app.setStyle(SingleClickWorkaroundProxy())

window = Main()

window.show()

app.exec_()


查看完整回答
反對 回復(fù) 2023-04-18
  • 1 回答
  • 0 關(guān)注
  • 287 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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