gpt4 book ai didi

python - 按下 tkinter 按钮即可调用函数

转载 作者:行者123 更新时间:2023-12-01 05:38:16 24 4
gpt4 key购买 nike

嘿,伙计们,第一次发帖,还有什么不那么嗨的吗?不管怎样,我试图用 tkinter 制作一个科学计算器,但我不太擅长它(而 python 是我的第二个合适的作业)。无论如何,大多数代码可能都是错误的,但我只是想一步一步地执行,特别是我担心函数 add 。我通过按钮调用它,但是我想传递 do 函数 a +。这又创建了一个我可以计算的数组。它一直出错,我不知道如何修复它。现在这真的很烦我,所以如果有人可以提供帮助,我将不胜感激

from tkinter import*
from operator import*

class App:
def __init__(self,master):#is the master for the button widgets
frame=Frame(master)
frame.pack()
self.addition = Button(frame, text="+", command=self.add)#when clicked sends a call back for a +
self.addition.pack()
def add(Y):
do("+")
def do(X):#will hopefully colaborate all of the inputs
cont, i = True, 0
store=["+","1","+","2","3","4"]
for i in range(5):
X=store[0+i]
print(store[0+i])
cont = False
if cont == False:
print(eval_binary_expr(*(store[:].split())))
def get_operator_fn(op):#allows the array to be split to find the operators
return {
'+' : add,
'-' : sub,
'*' : mul,
'/' : truediv,
}[op]
def eval_binary_expr(op1, num1, op2, num2):
store[1],store[3] = int(num1), int(num2)
return get_operator_fn(op2)(num1, num2)


root=Tk()
app=App(root)
root.mainloop()#runs programme

最佳答案

一般来说,类中的每个方法都应将 self 作为其第一个参数。 self 这个名字只是一个约定。它不是 Python 中的关键字。但是,当您调用诸如 obj.add(...) 之类的方法时,发送到该方法的第一个参数是实例 obj。按照惯例,在方法定义中调用该实例 self。因此,您的所有方法都需要修改为包含 self 作为第一个参数:

class App:
def __init__(self, master):#is the master for the button widgets
frame=Frame(master)
frame.pack()
self.addition = Button(frame, text="+", command=self.add)#when clicked sends a call back for a +
self.addition.pack()
def add(self):
self.do("+")
def do(self, X):
...

请注意,当您调用 self.do("+") 时,在方法 do 内,X 将绑定(bind)到 “+”。后来在那个方法中我看到了

X=store[0+i]

这会将 X 重新绑定(bind)到值 store[i]。我不知道您想在这里做什么,但请注意,这样做意味着您刚刚丢失了刚刚传入的 "+" 值。

关于python - 按下 tkinter 按钮即可调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18325332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com