Listbox返回的项不工作

2024-09-28 17:05:29 发布

您现在位置:Python中文网/ 问答频道 /正文

无法识别在另一个命令中使用从列表框返回的项。获取一条消息,说明"myBuff"不是字段名。myBuff应该作为字符串返回吗?其他时候我会收到这样的信息:TypeError: selectBuffer() takes exactly 2 arguments (1 given)

import arcpy,sys,os
from Tkinter import*

class Application(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.grid()
        self.createWidgets(master)

    def createWidgets(self,master):
        #add listbox and populate it
        self.bufList = Listbox(master, height=4, width=17, selectmode=SINGLE)
        self.bufList.grid(row=0, column=0, rowspan=4, columnspan=2, sticky='w')
        self.bufList.insert(END, "Select A Buffer")
        for item in ["5m", "10m", "15m"]:
            self.bufList.insert(END, item)

    #add Select Button
    self.selectButton = Button(master, text='1. Select',command=self.selectBuffer)
        self.selectButton.grid(row=0, column=2, sticky='nw')
        self.selectButton.bind("<<ListboxSelect>>", self.selectBuffer)

    #add method for select button
    def selectBuffer(self, event):
        global select
        select = self.bufList.curselection()
        myBuff = self.bufList.get(select[0])  #get value of selected item
        #perform geoprocessing analysis
        mxd = arcpy.mapping.MapDocument("C:/Projects/MyProject.mxd)
        arcpy.Buffer_analysis("C:/Projects/road.shp", "C:/Projects/roadBuffer100.shp","myBuff") 

root = Tk()
app = Application(master=root)
app.mainloop()

Tags: importselfmasteradddefitemselectgrid
1条回答
网友
1楼 · 发布于 2024-09-28 17:05:29

使用selectBuffer两次。你知道吗

command=self.selectBuffer

self.selectButton.bind("<<ListboxSelect>>", self.selectBuffer)

其中一行需要def selectBuffer(self, event):
另一个期望是def selectBuffer(self): 所以你得到了错误。你知道吗

使用None作为event的默认值来解决问题。你知道吗

def selectBuffer(self, event=None):

相关问题 更多 >