Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Rasberry Pi的Python3创建Tkinter小部件。创建一个复选按钮数组_Python_Arrays_Checkbox_Tkinter_Raspberry Pi - Fatal编程技术网

使用Rasberry Pi的Python3创建Tkinter小部件。创建一个复选按钮数组

使用Rasberry Pi的Python3创建Tkinter小部件。创建一个复选按钮数组,python,arrays,checkbox,tkinter,raspberry-pi,Python,Arrays,Checkbox,Tkinter,Raspberry Pi,我希望创建一个复选框数组,并将它们作为某种数组引用。 这使得使用较短的块编写代码更加容易。 理想的情况是这样的 for IOBit in range(8) self.GPIO_Array[IOBit] = tk.BooleanVar() tk.Checkbutton(self.MyFrame , variable = self.GPIO_Array[IOBit] ) 之后,我将有一个由8个布尔变量组成的数组,称为GPIO_数组[]。 然后我想使用这些访问权限,例如 self.G

我希望创建一个复选框数组,并将它们作为某种数组引用。 这使得使用较短的块编写代码更加容易。 理想的情况是这样的

for IOBit in range(8)
    self.GPIO_Array[IOBit] = tk.BooleanVar()
    tk.Checkbutton(self.MyFrame , variable = self.GPIO_Array[IOBit] )
之后,我将有一个由8个布尔变量组成的数组,称为GPIO_数组[]。 然后我想使用这些访问权限,例如

self.GPIO_Array[Index].get()

任何关于如何实现这一点的想法都可能是一种不同的方法,它允许循环而不是一大块半重复代码?

由于您没有显示实际代码,只是显示与实际代码类似的内容,因此很难确定您做错了什么。下面是一个工作示例,我试图模仿您想要的:

import Tkinter as tk

class Example(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)

        self.MyFrame = tk.Frame(self)
        self.MyFrame.pack(side="top", fill="x")

        self.GPIO_Array = []
        for IOBit in range(8):
            self.GPIO_Array.append(tk.IntVar())
            w = tk.Checkbutton(self.MyFrame, variable=self.GPIO_Array[IOBit],
                               onvalue=1, offvalue=0, command=self.show)
            w.pack(side="left")

        self.label = tk.Label(self, text="", width=8)
        self.label.pack(side="top", fill="x")

        # show the current value when the GUI first starts
        self.show()

    def show(self):
        s = ""
        for IOBit in range(8):
            s += str(self.GPIO_Array[IOBit].get())
        self.label.configure(text=s)

if __name__ == "__main__":
    root = tk.Tk()
    app = Example(root)
    app.pack(fill="both", expand=True)
    root.mainloop()

问题是什么?是什么阻止了你完全按照你的建议去做呢?问题是对于所有按下的按钮,变量的IOBit值总是为7,这不是我想要的。