python 修正:各种 tkinter 选项菜单选择相同的选项
python bugfix: various tkinter option menus pick same option
我正在 Python 中为微控制器板的接口编写一个 GUI,使用户能够 select 使用 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()
问题是行:
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')
相反。
我正在 Python 中为微控制器板的接口编写一个 GUI,使用户能够 select 使用 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()
问题是行:
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')
相反。