【发布时间】:2013-12-02 13:38:42
【问题描述】:
我已经尝试过,但我不确定如何使用按钮而不是画布使此代码工作。它用于使用 tkinter 的计算器。我需要使用按钮来完成这项工作,但我尝试过的一切都失败了。如果有人能告诉我怎么做,甚至做整件事,那将不胜感激。我是这种语言的新手,它让我很困惑。谢谢
from Tkinter import *
def quit():
window.destroy()
def buttonclick(event):
global calcvalue
global savedvalue
global operator
pressed = ""
if event.x >10 and event.x <70 and event.y > 50 and event.y < 110 : pressed = 7
if event.x >10 and event.x <70 and event.y > 120 and event.y < 180 : pressed = 4
if event.x >10 and event.x <70 and event.y > 190 and event.y < 250 : pressed = 1
if event.x >10 and event.x <70 and event.y > 260 and event.y < 320 : pressed = 0
if event.x >80 and event.x <140 and event.y > 50 and event.y < 110 : pressed = 8
if event.x >80 and event.x <140 and event.y > 120 and event.y < 180 : pressed = 5
if event.x >80 and event.x <140 and event.y > 190 and event.y < 250 : pressed = 2
if event.x >150 and event.x <210 and event.y > 50 and event.y < 110 : pressed = 9
if event.x >150 and event.x <210 and event.y > 120 and event.y < 180 : pressed = 6
if event.x >150 and event.x <210 and event.y > 190 and event.y < 250 : pressed = 3
if event.x >80 and event.x <140 and event.y > 260 and event.y < 320 : pressed = "equals"
if event.x >150 and event.x <210 and event.y > 260 and event.y < 320 : pressed = "clear"
if event.x >220 and event.x <280 and event.y > 50 and event.y < 110 : pressed = "divide"
if event.x >220 and event.x <280 and event.y > 120 and event.y < 180 : pressed = "times"
if event.x >220 and event.x <280 and event.y > 190 and event.y < 250 : pressed = "minus"
if event.x >220 and event.x <280 and event.y > 260 and event.y < 320 : pressed = "plus"
if pressed == 0 or pressed == 1 or pressed == 2 or pressed == 3 or pressed == 4 or pressed == 5 or pressed == 6 or pressed == 7 or pressed == 8 or pressed == 9 :
calcvalue = calcvalue * 10 + pressed
if pressed == "divide" or pressed == "times" or pressed == "minus" or pressed == "plus" :
operator = pressed
savedvalue = calcvalue
calcvalue = 0
if pressed == "equals":
if operator == "divide": calcvalue = savedvalue /calcvalue
if operator == "times": calcvalue = savedvalue * calcvalue
if operator == "minus": calcvalue = savedvalue - calcvalue
if operator == "plus": calcvalue = savedvalue + calcvalue
if pressed == "clear":
calcvalue = 0
displayupdate()
canvas.update()
def displayupdate():
canvas.create_rectangle(10, 10, 280, 40, fill="white", outline="black")
canvas.create_text(260, 25, text=calcvalue,font="Times 20 bold",anchor=E)
def main():
global window
global tkinter
global canvas
window = Tk()
window.title("Simple Calculator")
Button(window, text="Quit", width=5, command=quit).pack()
canvas = Canvas(window, width= 290, height=330, bg = 'beige')
canvas.bind("<Button-1>", buttonclick)
#Add the numbers
canvas.create_rectangle(10, 50, 50, 110, fill="yellow", outline="black")
canvas.create_text(40, 80, text="7",font="Times 30 bold")
canvas.create_rectangle(10, 120, 70, 180, fill="yellow", outline="black")
canvas.create_text(40, 150, text="4",font="Times 30 bold")
canvas.create_rectangle(10, 190, 70, 250, fill="yellow", outline="black")
canvas.create_text(40, 220, text="1",font="Times 30 bold")
canvas.create_rectangle(10, 260, 70, 320, fill="yellow", outline="black")
canvas.create_text(40, 290, text="0",font="Times 30 bold")
canvas.create_rectangle(80, 50, 140, 110, fill="yellow", outline="black")
canvas.create_text(110, 80, text="8",font="Times 30 bold")
canvas.create_rectangle(80, 120, 140, 180, fill="yellow", outline="black")
canvas.create_text(110, 150, text="5",font="Times 30 bold")
canvas.create_rectangle(80, 190, 140, 250, fill="yellow", outline="black")
canvas.create_text(110, 220, text="2",font="Times 30 bold")
canvas.create_rectangle(150, 50, 210, 110, fill="yellow", outline="black")
canvas.create_text(180, 80, text="9",font="Times 30 bold")
canvas.create_rectangle(150, 120, 210, 180, fill="yellow", outline="black")
canvas.create_text(180, 150, text="6",font="Times 30 bold")
canvas.create_rectangle(150, 190, 210, 250, fill="yellow", outline="black")
canvas.create_text(180, 220, text="3",font="Times 30 bold")
#Add the operators
canvas.create_rectangle(80, 260, 140, 320, fill="green", outline="black")
canvas.create_text(110, 290, text="=",font="Times 30 bold")
canvas.create_rectangle(150, 260, 210, 320, fill="green", outline="black")
canvas.create_text(180, 290, text="C",font="Times 30 bold")
canvas.create_rectangle(220, 50, 280, 110, fill="pink", outline="black")
canvas.create_text(250, 80, text="/",font="Times 30 bold")
canvas.create_rectangle(220, 120, 280, 180, fill="pink", outline="black")
canvas.create_text(250, 150, text="*",font="Times 30 bold")
canvas.create_rectangle(220, 190, 280, 250, fill="pink", outline="black")
canvas.create_text(250, 220, text="-",font="Times 30 bold")
canvas.create_rectangle(220, 260, 280, 320, fill="pink", outline="black")
canvas.create_text(250, 290, text="+",font="Times 30 bold")
#Setup the display
canvas.create_rectangle(10, 10, 280, 40, fill="white", outline="black")
global calcvalue
calcvalue = 0
displayupdate()
canvas.pack()
window.mainloop()
main()
【问题讨论】:
-
请先纠正缩进。
-
哇,真是个畜生! :)
-
画布完美运行时,为什么还要按按钮?
-
@fyr0049 因为好的代码很重要?!
-
“我尝试过的一切都失败了” - 你尝试过什么?你说你想使用按钮,并尝试使用按钮,但代码向我们展示了一个画布。您在创建按钮时遇到问题吗?将按钮与功能挂钩?让函数做点什么?
标签: python button canvas tkinter