因此对于我想要的这个更大的程序,当用户按下按钮时,它将关闭对话框窗口并更新用户输入的所有值。因此,我只有一个按钮可以执行以下两项操作:更新值并关闭程序。但是,尝试将这两个函数结合起来是行不通的,因为当我同时使用这两个函数时,只调用了update()命令,而不是close命令。两者分开工作。有什么办法解决吗?
function postfixEval( postfixArray ) {
var stack = [];
for( element of postfixArray){
console.log("element: " + element);
if(isNaN(element)){
var x = stack.pop();
var y = stack.pop();
console.log("var x/y: " + x + " " + y + " element: " + element) ;
if (element == "+"){
result = (y+x);
console.log("Expected Result: " + result)
stack.push(y + x);
} else if (element == '-'){
stack.push(y - x);
} else if (element == '*'){
stack.push(y * x);
} else if (element == '/'){
stack.push(y / x);
}
} else {
stack.push( parseFloat(element) );
}
}
//final check for non numbers within the stack
var returnValue = null;
while( stack.length > 0 ){
console.log( stack );
var element = stack.pop();
if(isNaN(element)){
continue;
} else{
returnValue = element;
}
}
return returnValue;
}
postfixEval(['7.7','7','+']);
答案 0 :(得分:0)
由于您使用lambda
,因此可以安全地将()
与函数一起使用,因此只需将finish_button
更改为:
finish_button = ttk.Button(self.window, text = "Submit Input", command=lambda:[update(),self.window.destroy()])
或者您可以创建一个新功能来为您完成这两项操作,例如:
def both():
update()
self.window.destroy()
finish_button = ttk.Button(self.window, text = "Submit Input", command=both)
提示:
另外,不建议将global
与OOP一起使用,因此,我建议您更改代码,并在OOP中使用适当的“方法”和self
,以获得更好的体验。
这是我认为您的班级应该喜欢的:
class Counter_program():
def __init__(self):
self.window = tk.Tk()
self.window.title("Test")
style = ttk.Style()
style.configure("BW.TLabel", foreground="black", background="white")
#default unit color
unitColor = "slategrey"
boxWidth = 5
# Create some room around all the internal frames
self.window['padx'] = 5
self.window['pady'] = 5
self.propeller_frame = ttk.LabelFrame(self.window, text="Propeller", relief=tk.RIDGE)
self.propeller_frame.grid(row=1, column=1, sticky=tk.E + tk.W + tk.N + tk.S)
#propeller diameter
self.propellerDiameter_label = ttk.Label(self.propeller_frame, text="Propeller Diameter")
self.propellerDiameter_label.grid(row=1, column=1, sticky=tk.W + tk.N +tk.S)
self.propellerDiameter_Units = ttk.Label(self.propeller_frame, text="inches",foreground=unitColor)
self.propellerDiameter_Units.grid(row=1, column=3, sticky=tk.W)
self.propellerDiameter_entry = ttk.Entry(self.propeller_frame, width=boxWidth)
self.propellerDiameter_entry.grid(row=1, column=2, sticky=tk.W, pady=3)
self.propellerDiameter_entry.insert(tk.END, "10")
# Finish button in the lower right corner
#finish_button = ttk.Button(self.window, text = "Submit Input", command = self.window.destroy)
self.finish_button = ttk.Button(self.window, text = "Submit Input", command=self.both)
self.finish_button.grid(row=2, column=2)
def update(self):
self.propDiameter = self.propellerDiameter_entry.get()
def both(self):
self.update()
self.window.destroy()
希望这可以解决问题,请让我知道是否有任何错误或疑问。
欢呼