达到回调值后插入文本 - Tkinter 文本小部件



我正在尝试在从我的比例小部件达到某个值后将文本插入 Tkinter 中的文本小部件。但是,似乎我的 if 语句不起作用,并且在按下计算按钮后没有将任何内容插入文本小部件。

self.dU = Scale(self.f2, from_=100, to=-100)
self.calculate_button = Button(self.f2, text="Calculate", command=self.calculate)
self.results_display = Text(self.f3, height=10, width=62)
self.results_display.pack()
self.results_display.configure(state=DISABLED)
def results_text(self):
if self.dU.get() > 0:
self.results_display.configure(state=NORMAL)
self.results_display.insert(END, "dU > 0, internal energy of the particles increases, therefore temperature increases.")
self.results_display.configure(state=DISABLED)
def calculate(self):
self.results_text()

在代码中,在创建刻度大约一毫秒后执行if语句。

如果您希望在值更改时调用if语句,请配置刻度的command参数。

例如:

self.du = Scale(..., command=self.scale_changed)
...
def scale_changed(self, value):
value = int(value)
if value > 0:
...

注意:即使在这种情况下self.du.get()将返回一个整数,当前值也会作为字符串传递给scale_changed

你的 if 语句有效,但你只在程序启动时调用它一次。我猜你想在每次滑块的值更改时运行该检查。为此,您需要使用一个变量并在其上放置跟踪:

self.dU = tk.IntVar()
self.dU.trace('w', self.check)
s = tk.Scale(self, variable=self.dU, from_=100, to=-100)
s.pack()
self.results_display = tk.Text(self, height=10, width=62)
self.results_display.pack()
self.results_display.configure(state=tk.DISABLED)
def check(self, *args):
if self.dU.get() > 0:
self.results_display.configure(state=tk.NORMAL)
self.results_display.insert(tk.END, "dU > 0, internal energy of the particles increases, therefore temperature increases.")
self.results_display.configure(state=tk.DISABLED)

最新更新