Kivy Mapview:区分按下的按钮

马克西格

很抱歉这个菜鸟问题,即时通讯仍在学习中,我很少找到有关mapview模块的文档。

因此,对于一个屏幕页面,我有以下内容:

class Mapspage(Screen):
    def __init__(self, **kwargs):
        self.aboutname="hi"
        super(Mapspage, self).__init__(**kwargs)
        gl = GridLayout(cols=1)
        mapview = MapView(zoom=12, lat=55.6712674, lon=12.5938239)
        self.buttons=[]
        self.nums=range(0,len(df["name_en"]))
        for i in self.nums:
            name=list(df["name_en"])[i]
            marker = MapMarkerPopup(lat=list(df["latitude"])[i], lon=list(df["longitude"])[i])
            self.buttons.append(button(text=list(df["name_en"])[i],on_press=partial(self.pressbutton,num=self.nums[i]),size=(len((df["name_en"])[i])*7*1.05,15),size_hint=(None,None)))
            marker.add_widget(self.buttons[i])
            mapview.add_marker(marker)
        gl.add_widget(mapview)
        self.add_widget(gl)

    def pressbutton(self,num, *args):
        global aboutname
        aboutname=(df["name_en"])[num]
        chatapp.screenmanager.current = "About"

我在哪里用from functools import partial我的方法存在问题,尽管我确保按钮存储在不同的变量中(self.buttons列表的元素),甚至确保它们自身的数字存储在单独的列表中,但我无法传递该数字变量,用于区分按钮按钮功能(单击地图点时出现)。当我进行尝试时,我会收到错误,TypeError: pressbutton() got multiple values for argument 'num'我认为所有按钮都传递给它们的num变量。

约翰·安德森

问题在于pressbutton()方法的定义及其对关键字参数的处理。您可以通过以下方式处理关键字pressbutton()

def pressbutton(self, button_instance, num=99):

它定义num为关键字参数并提供默认值。

另一种选择是这样的:

def pressbutton(self, button_instance, **kwargs):
    num = kwargs.pop('num', 99)

做同样的事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章