gpt4 book ai didi

python - 使用参数列表在 GUI 中创建单选按钮

转载 作者:太空宇宙 更新时间:2023-11-03 20:07:31 24 4
gpt4 key购买 nike

我使用列表作为 GUI 窗口的参数,并且列表中的每个单独项目都应该创建为 GUI 窗口中的单选按钮。目前,我使用 for 循环为每个单选按钮生成不同的值,并使用另一个 for 循环生成不同的列。但是,我只能为列表中的最后一项创建单选按钮。

这是我目前拥有的:

from tkinter import *
from tkinter.scrolledtext import *

class ExpenditureGUI:

def __init__(self, listOfCategories):
self._listOfCategories = listOfCategories
self._tk = Tk()
self._tk.title('Expenditure Tracker')
self._tk.geometry('500x200')
self._tk.resizable(False,False)
self.initWidgits()
self._tk.mainloop()


@property
def listOfCategories(self):
return self._listOfCategories
@listOfCategories.setter
def listOfCategories(self, newValue):
self._listOfCategories = newValue

def initWidgits(self):
#flow layout
topF = Frame(self._tk)
self._lblAmount = Label(topF, text = 'Amount: ')
self._txtAmount = Entry(topF, width=30)


rbtnF = Frame(topF)
self._rbtnVar = IntVar()
self._rbtnVar.set(0)
self._lblExpenditure = Label(topF, text = 'Type of Expenditure: ')

n = 0
for type in self._listOfCategories:
self._rbtntype = Radiobutton(rbtnF, text = f'{type}', value = n, variable = self._rbtnVar)


self._lblExpenditure.grid(row = 0, column = 0, sticky = E)

n = 0
for type in self._listOfCategories:
self._rbtntype.grid(row = 0, column = n)

最佳答案

我不是 GUI 库方面的专家,但这看起来很可疑:

for type in self._listOfCategories:
self._rbtntype = Radiobutton(rbtnF, text = f'{type}', value = n, variable = self._rbtnVar)
^^^^^^^^^^^^^^^^

此循环结束后,self._rbtntype 变量将包含仅引用类别列表中最后 元素的文本(即循环变量 type )。

您可能希望在代码示例的最后一个循环中构造一个新的Radiobutton。也许这样的事情会起作用。它可能需要在每次循环迭代中更新n

for type in self._listOfCategories:
rbtntype = Radiobutton(rbtnF, text = f'{type}', value = n, variable = self._rbtnVar)
rbtntype.grid(row = 0, column = n)

关于python - 使用参数列表在 GUI 中创建单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58892512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com