我用PyGtk制作了一个小的GUI程序,用于参数化地绘制自行车的框架(想法是:移动一些滑块,框架将用更新的参数重新绘制)。在
在代码的某个地方,我必须为每个参数创建一个滑块,我得到了一个非常非python和重复性的代码(抱歉,在编写此消息时,我无法获得正确的缩进):
def adjustbottomBracketHeight(par):
BikeDrawing.p.bottomBracketHeight = par.get_value()
painelhoriz.queue_draw()
bottomBracketHeightAdjust = gtk.Adjustment(value=BikeDrawing.p.bottomBracketHeight, lower=180., upper=400., step_incr=10.)
bbhScale = gtk.HScale(adjustment=bottomBracketHeightAdjust)
bbhScale.set_value_pos(gtk.POS_LEFT)
bbhScale.connect("value-changed", adjustbottomBracketHeight)
bbhLabel = gtk.Label("Bottom bracket height")
topcolumn1.pack_start(bbhLabel, False, False)
topcolumn1.pack_start(bbhScale, True, True)
def adjustseatTubeAngle(par):
BikeDrawing.p.seatTubeAngle = par.get_value()
painelhoriz.queue_draw()
seatTubeAngleAdjust = gtk.Adjustment(value=BikeDrawing.p.seatTubeAngle, lower=60., upper=85., step_incr=0.5)
staScale = gtk.HScale(adjustment=seatTubeAngleAdjust)
staScale.set_value_pos(gtk.POS_LEFT)
staScale.connect("value-changed", adjustseatTubeAngle)
staLabel = gtk.Label("Seat tube angle")
topcolumn1.pack_start(staLabel, False, False)
topcolumn1.pack_start(staScale, True, True)
def adjustSeatTubeLength(par):
BikeDrawing.p.seatTubeLength = par.get_value()
painelhoriz.queue_draw()
seatTubeLengthAdjust = gtk.Adjustment(value=BikeDrawing.p.seatTubeLength, lower=300., upper=700., step_incr=10.)
stlScale = gtk.HScale(adjustment=seatTubeLengthAdjust)
stlScale.set_value_pos(gtk.POS_LEFT)
stlScale.connect("value-changed", adjustSeatTubeLength)
topcolumn1.pack_start(stlScale, True, True)
def adjusttopTubeLength(par):
BikeDrawing.p.topTubeLength = par.get_value()
painelhoriz.queue_draw()
topTubeLengthAdjust = gtk.Adjustment(value=BikeDrawing.p.topTubeLength,
lower=400., upper=700., step_incr=10.)
ttlScale = gtk.HScale(adjustment=topTubeLengthAdjust)
ttlScale.set_value_pos(gtk.POS_LEFT)
ttlScale.connect("value-changed", adjusttopTubeLength)
topcolumn1.pack_start(ttlScale, True, True)
通过一些小的修改,我想(知道如何;o)在参数名列表上“创建”这种代码,类似于:
^{pr2}$我读了之前的一些问题/答案,但这个具体问题似乎没有答案。在
非常感谢您的关注
如果我理解你的话:
您可能还需要将其他一些参数(如BikeDrawing.p)传递给widgetize。在
注意,不需要为对象或函数的名称自定义本地名称,这里只需要属性的名称。对于更通用的代码,请使用更通用的函数和对象名。在
这个高阶函数为您创建函数。但是您需要确保像}这样的变量要么在定义的范围内,要么手动传递它们。在
painelhoriz
和{一个备注:你似乎混淆了控件的生成与属性的调整和每帧绘图。也就是说,代码会在每次更改时重新生成所有小部件。。。在
我想这或多或少就是你想要的:
相关问题 更多 >
编程相关推荐