我尝试在从我的缩放小部件到达某个值后,在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()
答案 0 :(得分:0)
在您的代码中,您在创建比例后大约一毫秒执行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
。
答案 1 :(得分:0)
你的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)