<p>我有一个名为<code>buttongen</code>的类,它根据建筑物内的房间生成按钮。将对房间进行评估,并将结果存储在数据库中。如何返回按钮上的文本值以存储在变量中?每次我尝试存储文件室的结果时,都会出现错误<code>TypeError: __init__() missing 2 required positional arguments: 'i' and 'row'</code></p>
<p>编辑:包括搜索建筑并生成按钮的代码部分</p>
<pre class="lang-py prettyprint-override"><code> 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)
</code></pre>
<p>如何将按钮上的文本存储在<code>roomclicked_info = buttongen()</code></p>
<p>正确的代码可能如下所示:</p>
<pre><code>i = 10 # the i you want
row = 10 # the row you want
roomclicked_info = buttongen(i, row)
</code></pre>
<p>类buttongen需要2个必需的位置参数</p>