【发布时间】:2019-11-03 10:43:28
【问题描述】:
我正在尝试通过 Tkinter 制作一个 GUI,它将根据一些用户输入来计算产量。根据用户选择的系统数量,我为逆变器类型弹出了该数量的选项菜单,并为每个串的模块、每个逆变器的串和每个系统的逆变器弹出了该数量的条目小部件。如果用户选择 2 个系统,请参见图片示例。
我正在使用回调函数实时获取用户选择的系统数量,以动态生成上述逆变器/模块小部件。
我的问题是我无法从这些小部件中检索值。我的尝试显示在天气计算功能中。
我假设问题是因为我在回调函数中生成了小部件/变量。但是,我还没有找到一种方法来根据回调函数之外的用户输入动态生成小部件的数量。
对此的任何帮助将不胜感激!
class Window:
# Define User Inputs:
def __init__(self, master):
master.title('Production Analysis Tool')
# EQUIPMENT PARAMETERS
# callback function to create entry boxes based on number of systems
def callback(*args):
self.system_size = int(self.system_size_raw.get())
# Modules per String
self.L3 = Label(root, text = "Number of Modules Per String").grid(row=20, column=1, sticky=E)
self.modules_string_raw = IntVar(root)
modules_per_string =[]
for i in range(self.system_size):
self.label = Label(root, text = "System {}".format(i+1)).grid(row=21+i, column=1, sticky=E)
self.widget = Entry(root).grid(row=21+i, column=2, sticky=W)
modules_per_string.append(self.widget)
# Number of Systems
self.L1 = Label(root, text = "Number of Systems").grid(row=1, column=1, sticky=E)
self.system_size_raw = IntVar(root)
choices = [1,2,3,4,5,6,7,8,9,10]
self.popupMenu2 = OptionMenu(root, self.system_size_raw, *choices).grid(row=1, column=2, sticky=W)
self.system_size_raw.trace("w", callback)
#Calculation Function
def weather_calculation(self):
# Get Values from User Input
self.mod_strings = np.float(self.modules_string_raw.get())
root = Tk()
root.configure()
window = Window(root)
root.mainloop()
【问题讨论】:
-
你发布的代码太多了。请尝试将其浓缩为minimal reproducible example。如果问题是从一组动态条目中获取值,我们所需要的只是一种设置数字的方法、一个生成它们的函数以及获取值的函数。我们不需要代码来处理一个csv文件,你可以使用一些静态数据。
-
我已将其压缩为仅显示回调函数的一部分,我在其中调用回调函数,并尝试检索值。
-
当我运行代码并从下拉列表中选择“3”时,它只会在抛出错误之前创建一个标签。
-
抱歉,我仍然有对那里文件的引用。我已将其更改为每个字符串输入的模块。这应该适合你了
标签: python python-3.x tkinter tk