我的第一个问题,我希望它是合理形成的。我正在编写一个pythontkintergui,它将根据组合框中的请求绘制不同类型的数据。用户将选择一个条目,mapplotlib图表将更新。我是一个长期的程序员,但仍在学习基本的Python和面向对象方法。你知道吗
恐怕我不懂一些基本知识。我已经将Combobox绑定到一个函数,它工作得很好,但是Web上的许多示例只在该函数中包含一个“我在这里”print语句。但是组合框中的一个选择会影响一些事情。我一定是逻辑错误了;我不知道如何格式化lambda函数调用来将图表和小部件等传递给回调函数。但是,我无法想象在回调函数中隐藏主程序逻辑。但是如果我在回调函数中做了一些简单的事情,比如将选择存储在变量中,那么我甚至需要让程序在组合框选择之外执行操作,这似乎与事件驱动风格背道而驰。你知道吗
组合框工作,我可以打印选择。我考虑过多次打电话给时间。睡眠()或诸如此类的方法来感知一个变化的变量,但这种形式似乎不好。我试过传递一个类给回调,但不知道它的格式。我试过组合框.after,但这似乎并不合适。你知道吗
from assign_choices import WidgetChoices
def make_chart_page(nb, chartPage, wc, product_choice):
comboValues = []
# Get names for entry into Combobox. This will depend upon the product.
Get_Combo_Entries(wc)
for i in range(len(wc.varList)):
comboValues.append(wc.varList[i][0])
# Add the chooser
comboChart = ttk.Combobox(labelFrameChart, values=comboValues, width=25)
comboChart.pack(anchor="w", padx=5)
comboChart.current(0)
# comboChart.bind("<<ComboboxSelected>>", callback)
# data={"one": 1, "two": 2}
data = wc
comboChart.bind("<<ComboboxSelected>>", lambda event, arg=data: callback(event, arg))
def callback(eventObject, arg):
a_c = eventObject.widget.get()
print("ACTIVE CHART " + a_c)
arg.active_chart = a_c
class WidgetChoices():
def __init__(self):
self.active_product = "POTATOES"
self.active_chart = "Producers"
self.active_map = "POTATOES"
self.varList = []
这段代码是半连枷,我不认为解决一个具体的错误会有帮助。相反,我应该如何:1)将Combobox选项存储在wc类中,然后请求主例程更新图表,或者2)如果需要,将所需的一切传递给回调函数并让它更新图表?你知道吗
谢谢你的帮助, 兰迪
现在我有机会清楚地认识到这一点,在回答另一个问题时,叶浩给予了我更多的学习和帮助。以下命令成功地传递参数,并根据需要更新模块中图表的属性。以下是独立的,但捕获了解决方案。你知道吗
相关问题 更多 >
编程相关推荐