想要使用单选按钮更改列表元素

want to change list elements using radiobutton

我有一个列表 (elenco),我想在单击单选按钮时更改它的元素,但我总是获得相同的列表

from tkinter import *

root = Tk()

el1 = [1, 2, 3, 4, 5]
el2 = [2, 2, 3, 4, 5]

elenco = []

def E(e):
    elenco = e
    return elenco

print (elenco)

radio1 = Radiobutton (text = 'r1', value = 1, command = lambda: E (el1)).pack()
radio2 = Radiobutton (text = 'r2', value = 2, command = lambda: E (el2)).pack()

print(elenco)

root.mainloop()

编辑:我post这里是所有新代码。我正在重写所有程序,因为我在使用旧代码时遇到了一些问题。

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]

class mainWindow(Frame):

    def __init__(self, parent=None):

        Frame.__init__(self, parent)
        self.pack(expand=YES, fill=BOTH)

    # Canvas on which buttons will be put:
        mainCanvas = Canvas (self, height = 650, width = 900, scrollregion = (0, 0, 900, 6000), bg = 'white')

    # Scrollbar to see all buttons (they could me also more then 60):
        sbar = Scrollbar(self, command = mainCanvas.yview)

        mainCanvas.config(yscrollcommand = sbar.set)              
        sbar.pack(side=LEFT, fill=Y)                    
        mainCanvas.place(x = 0, y = 0)


    #radiobuttons from which I'll choose the list
        radio1 = Radiobutton(self, text = 'lis1', value = 1).place (x = 920, y = 150) 
        radio2 = Radiobutton(self, text = 'lis2', value = 2).place (x = 920, y = 170)
        radio3 = Radiobutton(self, text = 'lis3', value = 3).place (x = 920, y = 190)


if __name__ == '__main__':
    root = Tk()
    root.title("main")
    root.geometry("1130x650+100+10")
    app = mainWindow(root)
    root.mainloop()

此代码中没有按钮,但如果您 运行 程序,您会看到白色 canvas,它们会在那里。还将有一个 EntryBox,您可以在其中写入元素 (-s) 名称(或部分名称),您将获得与该名称相对应的按钮。但是如果你想通过一个列表切换到另一个?那么,如果我想要第二个列表中而不是第一个列表中的 element4 的按钮?看起来没用,但实际上主列表中会有 720 个元素,所有其他列表都将是该列表的一部分。列表与区域相对应,主列表是所有区域的列表。所以,如果我想要一些以字母 "a" 开头的元素,但我想要它来自特定列表(区域)而不是来自任何地方?

如果您有更好的想法,请通过单选按钮选择列表,我会使用它。我的问题是按列表移动到另一个列表

希望对您有所帮助:

from tkinter import *
root = Tk()

list1 = [1,2,3]
list2 = [4,5,6]

buttonvar = IntVar()
buttonvar.set(' ')

def changeList():
    if buttonvar.get() == 0:
        print(list1)
    else:
        print(list2)

rb1 = Radiobutton(root, text='r1',
                  variable=buttonvar, value=0, command=changeList)
rb1.pack()

rb2 = Radiobutton(root, text='r2',
                 variable=buttonvar, value=1, command=changeList)
rb2.pack()

基本上,我为单选按钮使用了一个变量 (buttonvar),并将 lambda 函数更改为普通函数 (changeList),并在该函数中使用了一个条件 (if-else)根据变量值(01),在每次单击单选按钮时打印一个列表。我还将 buttonvar 设置为 ' ',因此当您启动程序时,单选按钮的 none 将被选中。除此之外我只更改了一些我不知道的变量,我只是觉得我的新变量会更好看(笑!)。

这就是你想要得到的吗:

from tkinter import *
root = Tk()

list1 = [1,2,3]
list2 = [4,5,6]

buttonvar = IntVar()
buttonvar.set(' ')

def changeList():
    mainList = []
    if buttonvar.get() == 0:
        mainList = list1
        print(mainList)
    else:
        mainList = list2
        print(mainList)

rb1 = Radiobutton(root, text="List 1",
                  variable=buttonvar, value=0, command=changeList)
rb1.pack()

rb2 = Radiobutton(root, text="List 2",
                  variable=buttonvar, value=1, command=changeList)
rb2.pack()

?
P.S.: 我的这个答案是基于@vladi 的编辑和评论:"For exemple: the list is empty, I click on button1, the list becomes [1,2,3], then I click on button 3 and I obtain [7,8,9]"