python 成员函数 分发器_Python元编程:自动生成成员函数

如何编写向类添加方法的函数?我有:class A:

def method(self):

def add_member(name):

self.new_method = def name...?

add_member("f1")

add_member("f2")

为了回答我想做的事。我在试着找出一些pyqt插槽。我希望能够调用一个函数create_slider,该函数将创建QSlider和QLabel,并创建滑块处理代码,并使滑块处理程序更新QLabel中的文本。以下是需要考虑的时段:

^{pr2}$

下面是一个生成一些UI的方法,但最好在每次调用它时都生成on_sample_slider方法:def insert_labeled_slider(hbox, name, slider_target):

# name

hbox.addWidget(QLabel(name))

# label

label = QLabel()

label.setMinimumSize(40, 0)

hbox.addWidget(self.sample_label)

#slider

slider = QSlider(Qt.Horizontal)

slider.setRange(0, 6)

slider.setTracking(True)

slider.setPageStep(1)

hbox.addWidget(slider)

self.connect(self.sample_slider, SIGNAL('valueChanged(int)'),

self.on_sample_slider)

self.sample_slider.setValue(0)

return (label, slider)

最终代码:def attach_on_slider(obj, name, variable, label, base):

def on_slider(self, value):

variable = base**value

label.setText('%d' % variable)

# This next line creates a method from the function

# The first arg is the function and the second arg is the object

# upon which you want it to be a method.

method = types.MethodType(on_slider, obj)

obj.__dict__["on_slider_" + name] = method

return method

class A:

def insert_labeled_slider(hbox, name, label_name, variable):

# name

hbox.addWidget(QLabel(label_name))

# label

label = QLabel()

label.setMinimumSize(40, 0)

hbox.addWidget(label)

#slider

slider = QSlider(Qt.Horizontal)

slider.setRange(0, 6)

slider.setTracking(True)

slider.setPageStep(1)

hbox.addWidget(slider)

on_slider_method = attach_on_slider(self, name, variable, label, 4)

self.connect(slider, SIGNAL('valueChanged(int)'),

on_slider_method)

slider.setValue(0)

return (label, slider)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值