【问题标题】:Python: Costing calculator outputPython:成本计算计算器输出
【发布时间】:2018-11-22 12:26:21
【问题描述】:

大家好

我正忙着为标牌部门创建一个小型成本计算器。 我没有让计算器输出金额。

简要说明: 你输入高度和宽度,然后当你按回车时它需要显示成本。

如何让它工作?请有任何建议,谢谢。

from tkinter import *
from tkinter import ttk

#Define the Functions here
def squeare(height,width):
    cost = ((float(height) * float(width))/1000000 * 650 * 1.15 * 1.50)
    return cost

window = Tk()
window.title("Costing Calculator V1.0")

mainframe = ttk.Frame(window, padding="20 20 20 20")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
window.columnconfigure(0, weight=1)
window.rowconfigure(0, weight=1)

height = StringVar()
width = StringVar()

#ttk.Label(mainframe, text="H").grid(column=1, row=1, sticky=E)
height_entry = ttk.Entry(mainframe, width=7, textvariable=height)
height_entry.grid(column=3, row=1, sticky=(W,E))

ttk.Label(mainframe, text="X").grid(column=5, row=1, sticky=E)

#ttk.Label(mainframe, text="W").grid(column=6, row=1, sticky=E)
width_entry = ttk.Entry(mainframe, width=7, textvariable=width)
width_entry.grid(column=7, row=1, sticky=(W,E))

ttk.Label(mainframe, text="=").grid(column=8, row=1, sticky=E)

#call function
#squeare()

window.mainloop()

【问题讨论】:

  • 您能否添加您遇到的具体问题以及可能的错误消息。目前这个范围很广
  • @SvenHarris 它正在运行,所以我可以添加高度和宽度,但点击回车后没有任何反应。

标签: python python-3.x tkinter


【解决方案1】:

我已经用回车键绑定了窗框。有一个空的 result 标签。每当您按下回车键时,它的 text 都会更新。

from tkinter import *
from tkinter import ttk

def squeare(height, width):
    cost = float(height) * float(width)/1000000 * 650 * 1.15 * 1.50
    result.configure(text=str(cost))

window = Tk()
window.title("Costing Calculator V1.0")

mainframe = ttk.Frame(window, padding="20 20 20 20")
mainframe.grid(column=0, row=0, sticky="nsew")
window.columnconfigure(0, weight=1)
window.rowconfigure(0, weight=1)

height = StringVar()
height.set(0)
width = StringVar()
width.set(0)

height_entry = ttk.Entry(mainframe, width=7, textvariable=height)
height_entry.grid(column=0, row=0, sticky="we")

ttk.Label(mainframe, text="X").grid(column=1, row=0, sticky="e")

width_entry = ttk.Entry(mainframe, width=7, textvariable=width)
width_entry.grid(column=2, row=0, sticky=(W,E))

ttk.Label(mainframe, text="=").grid(column=3, row=0, sticky="e")
result = ttk.Label(mainframe)
result.grid(row=0, column=4)

window.bind('<Return>', lambda e: squeare(height.get(), width.get()))

window.mainloop()

【讨论】:

  • 谢谢大家,我会检查我的代码,看看我哪里做错了。感谢大家的快速帮助
  • @LouisBotha 当然。刚刚编辑了我的代码以处理默认值。
【解决方案2】:

这是为了捕获第二个输入字段的“输入”事件。

from tkinter import *
from tkinter import ttk

#Define the Functions here
def squeare(height,width):
    cost = ((float(height) * float(width))/1000000 * 650 * 1.15 * 1.50)
    result.configure(text=str(cost))


def enter(event=None):
    squeare(height.get(), width.get())

window = Tk()
window.title("Costing Calculator V1.0")

mainframe = ttk.Frame(window, padding="20 20 20 20")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
window.columnconfigure(0, weight=1)
window.rowconfigure(0, weight=1)

height = StringVar()
width = StringVar()

#ttk.Label(mainframe, text="H").grid(column=1, row=1, sticky=E)
height_entry = ttk.Entry(mainframe, width=7, textvariable=height)
height_entry.grid(column=3, row=1, sticky=(W,E))

ttk.Label(mainframe, text="X").grid(column=5, row=1, sticky=E)

#ttk.Label(mainframe, text="W").grid(column=6, row=1, sticky=E)
width_entry = ttk.Entry(mainframe, width=7, textvariable=width)
width_entry.grid(column=7, row=1, sticky=(W,E))

width_entry.bind('<Return>',enter)

ttk.Label(mainframe, text="=").grid(column=8, row=1, sticky=E)
result = ttk.Label(mainframe, text="")
result.grid(column=9, row=1, sticky=E)

window.mainloop()

【讨论】:

  • @Uwe Ziegenhagen 它只是在 GUI 窗口中显示结果,而不是在其中。
  • 在“=”标签的东边放置一个结果标签,并使用标签的configure方法。我更新了我的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
相关资源
最近更新 更多