简体   繁体   English

Appjar label 不会更新

[英]Appjar label won't update

link to code in pastebin I'm new to Python, and I attempted to create a calculator application.链接到 pastebin 中的代码我是 Python 的新手,我试图创建一个计算器应用程序。 I'm using the Appjar library for my calculator GUI.我正在为我的计算器 GUI 使用 Appjar 库。 The calculator works fine, but the appjar label "bar" will not update, despite changes in the variable accumulator.计算器工作正常,但 appjar label “bar”不会更新,尽管变量累加器发生了变化。 I have attempted to add loops, appjar's.after() function, and messing with appjar's automatic updating system, but I cannot seem to fix the problem.我试图添加循环,appjar's.after() function,并弄乱了appjar的自动更新系统,但我似乎无法解决问题。

#define variables
error=''
accumulator = 0
mem = 0
op = ''
 
#import GUI
from appJar import gui
app=gui("Grid Demo", "500x600")
app.setSticky("news")
app.setExpand("both")
app.setFont(20)
 
       
# Do the math will take the accumulator and memory registers and perform the prevailing operation on them.
# It returns the result, as an integer
def doTheMath(a,b,o):
    if o == "add":
        return a + b
    if o == "sub":
        return b - a
    if o == "mul":
        return a * b
    if o == "div":
        return b/a
 
    #press function defines the output of each button.
def press(button):
    global accumulator
    global mem
    global op
 
    print ("A button was pressed: " + button)
    if button == "C":
        accumulator = 0
        op = ""
        mem = 0
    elif button == "=":
        accumulator = doTheMath(accumulator,mem,str(op))
        mem = 0
        op = ""
    elif button == "+":
        op = "add"
        mem = accumulator
        accumulator = 0
    elif button == "-":
        op = "sub"
        mem = accumulator
        accumulator = 0
    elif button == "x":
        op = "mul"
        mem = accumulator
        accumulator = 0
    elif button == "÷":
        op = "div"
        mem = accumulator
        accumulator = 0
    else:
        accumulator = accumulator * 10 + int(button)
    print ("Acc: " + str(accumulator) + ", op: " + op + ", mem: " + str(mem))
    app.go()
   
       
    #define widgets in GUI
app.addLabel("bar", error+str(accumulator), 0, 0, 3)
app.addButtons(["1"], press, 3, 0)
app.addButtons(["2"], press, 3, 1)
app.addButtons(["3"], press, 3, 2)
app.addButtons(["4"], press, 2, 0)
app.addButtons(["5"], press, 2, 1)
app.addButtons(["6"], press, 2, 2)
app.addButtons(["7"], press, 1, 0)
app.addButtons(["8"], press, 1, 1)
app.addButtons(["9"], press, 1, 2)
app.addButtons(["0"], press, 4, 1)
app.addButtons(["+"], press, 3, 3)
app.addButtons(["-"], press, 4, 3)
app.addButtons(["x"], press, 2, 3)
app.addButtons(["÷"], press, 1, 3)
app.addButtons(["="], press, 4, 2)
app.addButtons(["C"], press, 4, 0)
app.go()

Appjar needs .setlable() to be referenced anytime any variable within "bar" changes, I made a function called changeLable(), Appjar 需要.setlable()来引用任何时候“bar”中的任何变量发生变化,我做了一个名为 changeLable() 的 function,

def changeLabel():  
    app.setLabel("bar", error+str(accumulator))

That when referenced at the end of the set of if statements, changes the label "bar", to error+str(accumulator .当在 if 语句集的末尾引用时,将 label “bar”更改为error+str(accumulator
Credit to jasonharper.归功于杰森哈珀。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM