0

これは何百万回も尋ねられていると確信していますが、正しい用語を知らないと何かを検索するのは難しいです:(

私は試みています(再び... OOを理解したことがありません. 8年前にひどく教えられたので、私が知っている他のすべてのプログラマーの恐怖に、可能な限り避けてください-私の心はそうではありませんOO と PyQt を同時に自分自身に教えるためです。

これが論理的に可能かどうかさえわかりませんが、2 つの異なるものによって参照される PyQtアクションがあります。アクションの引数の 1 つはアイコンです。それらのいずれかによってアクションが呼び出されたら、アイコンを変更したいと思いますコードスニペット:

self.menu()
self.toolbar()
self.actions()

def menu(self):
  self.fileMenu = QtGui.QMenu("&File", self)
  self.fileMenu.addAction(self.exitAct)

def toolbar(self):
  self.toolbar = self.addToolBar("Exit")
  self.toolbar.addAction(self.exitAct)

def actions(self):
  self.exitIcon = QtGui.QIcon('exit.png')
  self.exitAct = QtGui.QAction(self.exitIcon, "&Exit", self, triggered=self.close)

ツールバーに、別のアイコン ( exitdoor.png) が欲しいです。のドキュメントにQtIconaddFileメソッドがあるので、試しました:

self.toolbar.addAction(self.exitAct)
self.exitIcon.addFile("exitdoor.png")

しかし、これはエラー (「'QToolBar' オブジェクトには属性 'addFile' がありません」) で機能しませんでした。

self.exitAct.addFile("exitdoor.png")

エラー「QAction」オブジェクトには属性「addFile」がありません(これが機能しない理由とエラーの意味を理解しています)。

私の愚かな間違いは何ですか?! (オブジェクト指向を学び続けるという苦痛に身をさらすという過ちは別として...)

4

3 に答える 3

0

私よりずっと頭のいい人たちと話した結果、私がやろうとしていたことは一見不可能に思えるという短い答えが返ってきました。actionが定義されると、その属性を変更することはできません 。

現時点では、Python に関する私の知識は、これがなぜなのか (またはドキュメントからどのように実現できたのか) を正確に理解するには十分ではありませんが、アクションが定義されると、事実上、メモリに格納されたブラックボックスになるようです。 、およびその他のオブジェクトは、ブラックボックスを使用することしかできず、変更することはできません。

引き続きコメント大歓迎です!

于 2013-07-09T14:08:09.780 に答える
0

私は PyQt には詳しくなく、Python の初心者にすぎませんが、他のオブジェクト指向言語 (主に C++ と Java) についてはかなりの経験があります。フィールドexitIconとに格納されているオブジェクトの種類を特定する必要があるようですexitAct。そこから、これらのオブジェクトが持つ属性を見つけ、必要な動作を得るために変更できる属性を見つける必要があります。

その他の考え:

self.exitIcon = QtGui.QIcon('exit.png')との実行の間のどこかで、self.exitIcon.addFile("exitdoor.png") self.exitIconを参照するように変更されますQToolBarprintコードの実行を追跡し、この変数がどのように変更されたかを調べることができるように、コードにステートメントを散りばめることをお勧めします。

于 2013-06-14T16:54:58.677 に答える