【问题标题】:How to integrate a python program into a kivy app如何将 python 程序集成到 kivy 应用程序中
【发布时间】:2016-09-12 22:10:13
【问题描述】:

我正在开发一个使用 kivy 模块用 python 编写的应用程序,以开发一个跨平台的应用程序。在这个应用程序中,我有一个表格,它采用一些数值。我希望将这些数值传递给我编写的另一个 python 程序,用于计算其他一些值,然后传递回应用程序并返回给用户。外部程序目前没有认识到我试图传递给它的值存在。下面是我正在使用的 3 个文件的示例代码,2 个用于应用程序,1 个用于外部程序。对于导入的大量看似未使用的 kivy 模块,我深表歉意,我将它们全部用于完整的应用程序中。

main.py

import kivy
import flowcalc

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.dropdown import DropDown
from kivy.uix.spinner import Spinner
from kivy.uix.button import Button
from kivy.base import runTouchApp
from kivy.uix.textinput import TextInput
from kivy.properties import NumericProperty, ReferenceListProperty, ObjectProperty, ListProperty
from kivy.uix.gridlayout import GridLayout
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window
from kivy.uix.slider import Slider
from kivy.uix.scatter import Scatter
from kivy.uix.image import AsyncImage
from kivy.uix.carousel import Carousel

Builder.load_file('main.kv')

#Declare Screens

class FormScreen(Screen):
    pass

class ResultsScreen(Screen):
    pass

#Create the screen manager

sm = ScreenManager()

sm.add_widget(FormScreen(name = 'form'))
sm.add_widget(ResultsScreen(name = 'results'))

class TestApp(App):
    def build(self):
        return sm

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

main.kv

<FormScreen>:
    BoxLayout:
        orientation: 'vertical'
        AsyncImage:
            source: 'sample.png'
            size_hint: 1, None
            height: 50
        GridLayout:
            cols: 2
            Label:
                text: 'Company Industry'
            Label:
                text: 'Sample'
            Label:
                text: 'Company Name'
            TextInput:
                id: companyname
            Label:
                text: 'Company Location'
            TextInput:
                id: companylocation  
            Label:
                text: 'Data1'
            TextInput:
                id: data1
            Label:
                text: 'Data2'
            TextInput:
                id: data2
            Label:
                text: 'Data3'
            TextInput:
                id: data3
        Button: 
            text: 'Submit'
            size_hint: 1, .1
            on_press: root.manager.current = 'results'

<ResultsScreen>:
    BoxLayout:
        orientation: 'vertical'
        AsyncImage:
            source: 'sample.png'
            size_hint: 1, None
            height: 50
        Label:
            text: 'Results'
            size_hint: 1, .1
        GridLayout:
            cols: 2
            Label: 
                text: 'Results 1'
            Label:
                text: results1
            Label: 
                text: 'Results 2'
            Label:
                text: results2
            Label: 
                text: 'Results 3'
            Label:
                text: results3
            Label: 
                text: 'Results 4'
            Label:
                text: results4

其他程序.py

data1float = float(data1.text)                                                                       
data2float = float(data2.text)                               
data3float = float(data3.text)

results1 = data1float + data2float
results2 = data1float - data3float
results3 = data2float * data3float
results4 = 10 * data2float          

【问题讨论】:

    标签: android python kivy kivy-language


    【解决方案1】:

    据我了解,您希望代码最后一部分中的 GridLayout 中的标签从您的 python 代码中获取它们的文本。你可以这样做:

    from otherprogram import results1, results2, results3, results4
    
    class ResultsScreen(Screen):
    
        label1_text = results1
        label2_text = results2
        label3_text = results3
        label4_text = results4
    

    然后在您的 .kv 文件中,您可以通过调用它们的根小部件属性来访问这些值。

        Label:
            text: root.label1_text
    

    等等。

    【讨论】:

    • 不幸的是,这不起作用,我收到一条错误消息:ImportError: cannot import name results1
    • 这只是一个示例代码。我的意思是尝试做这样的事情。尝试将您的变量从您的 otherprgram 导入您的 kivy main.py 文件
    • 对,我明白了,我也在用例子。我是说将变量导入 main.py 不起作用。什么可能导致抛出此异常?
    • 与上面的代码唯一不同的是我在 main.py 中添加了 'from otherprogram import results1, results 2, results 3, results 4' 和 'from main import data1, data2,数据3'
    • 我无法以这种方式真正帮助您。你可以把你的整个项目发邮件给我,这样我就可以帮助你。 aminetesamian1371@gmail.com
    猜你喜欢
    • 2021-03-26
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2011-11-25
    • 2016-05-03
    相关资源
    最近更新 更多