少し動作が変更されたQActionが必要です。 QActionがチェックされるたびに信号を出すだけでなく、QActionが無効になっていてもチェックボックスを常にチェック可能にします。たとえば、QActionをsetEnabled(False)に設定した場合、QActionをクリックしたり、チェックをオン/オフすることはできません。私はそれがもうクリックできないのが好きですが、QAction内のチェックボックスを切り替えることはできません。私が探しているものを得るためにそれを変更することは可能ですか?PyQt - 無効にしてもQActionをチェック可能にします。
私は以下のサンプルファイルを添付しました。目標は、QActionが無効に設定されている(setEnabled(False))解決策をいくつか作成することですが、ユーザーは引き続きチェック/チェック解除できます。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''An example file with a QAction that stays checkable.'''
# IMPORT STANDARD LIBRARIES
import sys
# IMPORT THIRD-PARTY LIBRARIES
from Qt import QtWidgets
from Qt import QtCore
class AlwaysOpenAction(QtWidgets.QAction):
def __init__(self, *args, **kwargs):
super(AlwaysOpenAction, self).__init__(*args, **kwargs)
self.toggled.connect(self.printout)
def printout(self):
if self.isChecked():
print('Checkbox was checked')
class WindowTest(QtWidgets.QWidget):
'''A basic window.'''
def __init__(self, parent=None):
'''Init the window.'''
super(WindowTest, self).__init__(parent=parent)
self.setLayout(QtWidgets.QHBoxLayout())
self.menubar = QtWidgets.QMenuBar(parent=self)
self.menu = self.menubar.addMenu('Some menu')
action = AlwaysOpenAction('something', self.menu)
action.setCheckable(True)
action.setEnabled(False)
self.menu.addAction(action)
self.layout().addWidget(self.menubar)
self.resize(500, 400)
def main():
'''Do the window test.'''
qapp = QtWidgets.QApplication(sys.argv)
window = WindowTest()
window.show()
sys.exit(qapp.exec_())
if __name__ == '__main__':
main()
私はそれが何のために良いのか分かりますか?おそらく、あなたの問題の別の解決策を考え出すことができます。 f QActions。 – Matho
ええ、確かに。基本的には、私はいくつかのツールを含むメニューを持つアプリケーションを持っています。一部のツールには依存関係があり、他のツールには依存しません。ツールによっては、依存関係が自動的に設定されるものがあるため、実行するたびに他のツールと同じようにツール自体を押す必要はありません。彼らは一度ロード/アンロードする必要があります。 実行時の動作がない場合は、実際にQActionのクリック機能を実行せずに依存関係をオン/オフにする方法が必要ですが、ユーザーに表示することもできます(通常、またはそれをunclickableにする) – ColinKennedy
あなたは私のことをよりよく説明することができます。あなたの質問は非常に混乱しています。 – eyllanesc