文件选择器打开,而无需在子窗口上单击按钮

时间:2018-12-19 16:23:02

标签: python python-3.x user-interface appjar

我想显示一个登录屏幕。登录成功后,我想显示一个带有按钮的窗口。如果我单击该按钮,则应打开一个文件选择器。

使用我的代码,发生的情况是正确登录后,文件选择器将直接打开,而不是单击按钮时打开。如果文件选择器关闭,则显示主窗口和另一个带有按钮的窗口。我的代码有什么问题?我该如何解决?

这是我的代码:

from appJar import gui
app = gui()

def AuthenticationDetails(user, passw):
    if user=="myuser" and passw=="mypass":
        return True
    else:
        return False

def press(button):
    usr = app.getEntry("Username")
    pwd = app.getEntry("Password")
    print("User:", usr, "Pass:", pwd)
    if AuthenticationDetails(usr, pwd):
        Success()
    else:
        app.errorBox("Failed login", "Invalid username or password")

def Success():
    print("Successfully logged in")


def login(btn):
    # app.hideSubWindow("Login")
    app.showSubWindow("Main", hide=True)
    app.buttons(["Choose file"], [choosefile(app)])
    # app.addButton("Choose File", choosefile(app))
    app.show()

def choosefile(app):
    print("Opening Choose file")
    app.openBox(title="Choose P1 form pdf file", dirName=None, fileTypes=None, asFile=False, parent="Main")


app.startSubWindow("Login")
app.label("Enter login details", bg='blue', fg='white')
app.entry("Username", label=True, focus=True)
app.entry("Password", label=True, secret=True)
app.buttons(["Submit", "Cancel"], [login, app.stop])
app.stopSubWindow()

app.startSubWindow("Main", title="ESI Superspecialty Reference Helper v1.0")
app.label("Your login was successful", bg='blue', fg='white')
app.setSize("400x200")
app.setBg("blue")
app.setFg("white")
app.stopSubWindow()
app.go(startWindow="Login")

1 个答案:

答案 0 :(得分:1)

您的login()函数正在调用chooseFile()函数,而不是将其作为回调参数传递。

摆脱app函数中的chooseFile()参数,然后在为按钮分配chooseFile时不包含任何方括号或参数。