【问题标题】:python bugfix: various tkinter option menus pick same optionpython 错误修复:各种 tkinter 选项菜单选择相同的选项
【发布时间】:2020-12-18 11:12:36
【问题描述】:

我正在用 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()

【问题讨论】:

  • 你的根窗口上没有任何东西,也许你使用了错误的小部件作为父级?
  • 我忽略了根窗口中打包的所有其他小部件,因为它们似乎无关紧要。有了他们,问题还是一样

标签: python tkinter tkinter.optionmenu


【解决方案1】:

问题在于:

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')

改为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 2023-04-07
    • 2016-11-06
    • 2019-03-14
    • 2012-10-10
    相关资源
    最近更新 更多