我有一个名为chosenTestHolder
(从myconfig文件导入)的列表,它由几个对象组成,每个对象的属性都是'sentence'。在
当第一次按下按钮'Press'时,chosenTestHolder
中第一个对象的属性'sentence'应该显示在文本小部件中。下一次按下“Press”按钮时,chosenTestHolder
中第二个对象的属性“sentence”应该显示出来,依此类推。在
我正在使用lambda事件绑定“Press”按钮,并尝试在每次按下“Press”按钮后使用一个新句子作为其第一个参数。但是,它总是显示第一句话。在
当我在搜索Stackoverflow时 Using lambda function to change value of an attribute你不能在lambda表达式中使用赋值,但是通过阅读我仍然没有找到解决问题的方法。在
感谢帮助!代码在下面!在
在主.py在
from tkinter import font
import tkinter as tk
import tkinter.ttk as ttk
import my_config
import Testlist as tl
class TestWidgetTest:
def __init__(self):
ram = tk.Frame(root)
ram.grid(in_=root,row=0, column=0)
self.myText = tk.Text(ram, height = 5)
self.myText.grid(row=0,column=1)
my_config.counter = 0
self.myButton = tk.Button(ram, text = 'Press')
self.myButton.grid(row =1, column =0, columnspan =2)
indata =[my_config.chosenTestHolder[my_config.counter] , self.myText]
self.myButton.bind('<ButtonRelease-1>',lambda event, arg=indata : self.TagConfigure(event, arg))
def TagConfigure(self, event, arg):
arg[1].delete('1.0',tk.END)
arg[1].insert('1.0',arg[0].sentence)
my_config.counter += 1
root = tk.Tk()
TestWidgetTest()
root.mainloop()
我的_配置.py在
^{pr2}$在测试列表.py在
^{3}$
你的问题是因达的任务。 你只在init中赋值。在
为了让你的代码工作,你需要重新配置你的句子。。。在
我建议将当前句子作为实例变量进行跟踪。在
正如你所看到的,根本不需要羔羊。在
编辑 关于你的问题:
在需要lambda的地方至少没有。
请记住仅使用lambda且仅限使用,如果存在
否(=空)其他选项。
init
方法中使用tk.Frame.__init__(self, args, kwargs)
来实现)。有关继承的更多信息,请参考该主题的大量手册和教程(google是您的朋友,现在您已经知道了该机制的名称)。在相关问题 更多 >
编程相关推荐