【问题标题】:struggling with python and Kivy与 python 和 Kivy 斗争
【发布时间】:2016-01-28 01:26:05
【问题描述】:

我正在学习 python 和 Kivy,我真的很难理解如何从 Kivy GUI 调用函数和继续函数。

这是我的 .py:

import csv
import os
import easygui
import kivy
kivy.require('1.0.7')

from kivy.app import App
from kivy.animation import Animation
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput

def csvImport(filename):
    with open(filename, 'rb') as f:
        reader = csv.reader(f)
        your_list = list(reader)
        return your_list

class LoadFile(App):
    def FileLoadScreen(self):
        self.add_widget(Button(size_hint_y=(None), height=('48dp'), text='Select File',
                    on_press=self.ImportFile))

    def ImportFile(self, instance):
        filepath = easygui.fileopenbox()
        if filepath!='.':
            a=csvImport(filepath)
            instance.text='File Loaded'
            instance.disabled=True

class loginBAKApp(App):
    def logAuth(username,password):
        if username!='' and password!='':
            print('ok')
    kv_directory = 'GUI'

if __name__ == '__main__':
    loginBAKApp().run()

这是我的 loginBAK.kv:

#:kivy 1.9.0
GridLayout:
    row_force_default: True
    row_default_height: 40
    rows: 3
    cols: 2
    padding: 10
    spacing: 10
    Label:
        id: userLabel
        text: 'Username:'
    TextInput:
        id: username
    Label:
        id: passwordLabel
        text: 'Password:'
    TextInput:
        id: password
        password: True
    Button:
        id:btn_login
        text: 'Login'
        on_press: print('OK')

此代码似乎可以正常工作(当我单击登录按钮时,它会打印“确定”。我尝试将其替换为

on_press: logAuth(username,password)

我收到一个错误,即未定义 logAuth。

最终,我在这里尝试建模(作为我的第一次学习经验)是点击登录按钮,只要字段不为空,显示登录成功消息 5 秒钟,然后删除字段并调用 LoadFile 应用程序(添加一个可以单击以选择和导入文件的按钮)。

我到底做错了什么?我已经在网上筛选了大约 60 个脚本,并且已经看了几个小时的 Kivy 示例,但我无法弄清楚我是如何做错的。有人可以为我指出正确的方向和/或就创建/删除 gui 以执行我所描述的操作提出建议吗?我是 Kivy 的新手(并且可以编写基本的 Python 脚本),所以当我阅读有关 stackoverflow 的其他一些问题时,这一切都让人有些困惑。

【问题讨论】:

    标签: python kivy


    【解决方案1】:
    on_press: logAuth(username,password)
    

    logAuth 是您的应用程序类的方法,而不是在 kv 命名空间中定义的函数。您可以改用app.logAuth(...)app 是引用当前应用实例的关键字。

    【讨论】:

    • 好的,这很有道理。我现在已经让那部分工作了,但我仍在努力弄清楚如何删除元素并调用下一个函数。
    猜你喜欢
    • 2014-10-04
    • 1970-01-01
    • 2012-12-12
    • 2020-03-28
    • 2020-09-18
    • 2018-05-23
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多