0

我正在用 Python 编写一个用于微控制器板接口的 GUI,它使用户能够为要使用 tkinter 读取的每个通道选择传感器类型。由于其中有几个,我想通过一个循环。现在的问题是,每当我为一个小部件选择一个选项时,其他小部件也会选择该选项。显然我希望能够为每个频道选择不同的选项。

import tkinter as tk
import numpy as np

root = tk.Tk()


class Window(tk.Frame):

    def __init__(self, root): 
        self.root = root 
        tk.Frame.__init__(self, root)
        self.root.title("Einstellungen")
        self.root.geometry(newGeometry="320x200")
        self.pack()

        self.bg = tk.Canvas(self.root)
        self.bg.pack()

        analogChannelsIn = tk.LabelFrame(self.root, text="Input", width=100)
        analogChannelsIn.pack()
        self.AnaOptions = np.array([[["-None-"], ["K-type Thermocouple"], ["rH Sensor"]] * 7], 'object')
        self.AnaOptions = self.AnaOptions.reshape([7, 3])
        self.addm = np.array([tk.StringVar()] * 7, 'object')
        self.acdd = np.zeros(7, 'object')
        for i in range(0, 7, 1):
            self.acdd[i] = tk.OptionMenu(analogChannelsIn, self.addm[i],*self.AnaOptions[i])
            self.addm[i].set("-None-")
            self.acdd[i].pack()

settings = Window(root)

settings.mainloop()
4

1 回答 1

2

问题是这一行:

self.addm = np.array([tk.StringVar()] * 7, 'object')

因为[tk.StringVar()] * 7创建了 7 次相同的列表StringVar。要获得 7 种不同StringVar,请使用

self.addm = np.array([tk.StringVar() for i in range(7)], 'object')

反而。

于 2020-12-18T12:26:21.273 回答