0

ここで脳のおならを完成させてください。正しい質問をしているのかどうかさえわかりません。クラス内に存在するクラスのメソッドを追加/変更するにはどうすればよいですか?

QtDesigner で設計された QT GUI を構築しています。私の Python プログラムは、GUI ファイル クラスにサブクラス化された新しいクラスをインポートして作成します。メソッドをそのクラス内のボタンに変更したい。

したがって、基本的には以下があり、「aButton」にメソッドを追加したいと思います。

qtDesignerFile.py

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        self.aButton = QtGui.QPushButton()

myPythonFile.py

import qtDesignerFile

class slidingAppView(QMainWindow,slidingGuiUi.Ui_MainWindow):
    def __init__(self,parent=None):
        super(slidingAppView,self).__init__(parent)
4

2 に答える 2

2

ジョランの答えに追加するには、メソッドを次のように追加します。

def foo():
    pass

instance.foo = foo

静的メソッドのように機能します (最初の引数としてインスタンスが渡されません)。バインドされたメソッドを追加する場合は、次の操作を実行できます。

from types import MethodType

def foo(instance):
    # this function will receive the instance as first argument
    # similar to a bound method
    pass

instance.foo = MethodType(foo, instance, instance.__class__)
于 2013-03-19T00:10:27.453 に答える
0
self.aButton.PrintHello = lambda : print "hello!"

また

def aMethod():
    do_something()

self.aButton.DoSomething = aMethod 

どちらも機能するはずです...おそらくもっと多くの方法もあります...これは、 aButton がオブジェクトから継承するpythonクラスであることを前提としています

于 2013-03-18T23:38:04.110 に答える