如何在类中返回self的值?

2024-06-16 10:07:24 发布

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

我有一个名为buttongen的类,它根据建筑物内的房间生成按钮。将对房间进行评估,并将结果存储在数据库中。如何返回按钮上的文本值以存储在变量中?每次我尝试存储文件室的结果时,都会出现错误TypeError: __init__() missing 2 required positional arguments: 'i' and 'row'

编辑:包括搜索建筑并生成按钮的代码部分

    def search():
        global screen13
        global btn
        screen13 = Tk()
        screen13.geometry("300x250")
        screen13.title("Rooms")
        sitename3_info = sitename.get().strip()
        if sitename3_info:
            cursor = cnn.cursor()
            # combine the two SQL statements into one
            sql = ("SELECT roomname FROM rooms, Sites "
                   "WHERE rooms.siteID_fk2 = Sites.siteID AND siteName = %s")
            cursor.execute(sql, [sitename3_info])
            rooms = cursor.fetchall()
            # remove previous result (assume screen13 contains only result)
            for w in screen13.winfo_children():
                w.destroy()
            if rooms:
                for i, row in enumerate(rooms):
                    buttongen(i, row)
            else:
                Label(screen13, text="No room found").grid()

    class buttongen():
        def __init__(self,i,row):
            # creates a self generated amount of buttons which correspond to the amount of rooms in the table.
            self.i = i
            self.row = row
    
            self.roomname = self.row[0]
            self.btn = Button(screen13, text = self.roomname, command=lambda :[print(self.roomname), action()])
            self.btn.grid(row=i, column=0)
        def showroomname(self):
            print(self.roomname)

如何将按钮上的文本存储在roomclicked_info = buttongen()


Tags: theinselfinfodef按钮cursorrow
2条回答

正确的代码可能如下所示:

i = 10   # the i you want
row = 10 # the row you want
roomclicked_info = buttongen(i, row)

类buttongen需要2个必需的位置参数

要初始化buttongen()的对象,需要传递def __init__(self,i,row):中定义的两个必需参数irow

在使用roomclicked_info = buttongen()创建对象时,没有在buttongen()中指定irow参数。您可以在此处传递irow的值,如roomclicked_info = buttongen(i, row)

相关问题 更多 >