带有textvariable的Python Kivy标签

带有textvariable的Python Kivy标签,python,variables,label,kivy,kivy-language,Python,Variables,Label,Kivy,Kivy Language,我是kivy编程新手,我可能需要一些代码方面的帮助 我要做的是运行函数draw_card(),并在Screen2中按下第二个按钮时,将Screen2中的标签文本设置为draw_card中提到的变量some_var 我有3个文件要做。main.py和python代码,screens.kv和kivy代码,appvariables.py和draw_a_card()的函数和字典 是否还有一种方法可以使用常用变量而不是appvariables.py中的card_draw_dict来输出我的已绘制卡片 非常

我是kivy编程新手,我可能需要一些代码方面的帮助

我要做的是运行函数draw_card(),并在Screen2中按下第二个按钮时,将Screen2中的标签文本设置为draw_card中提到的变量some_var

我有3个文件要做。main.py和python代码,screens.kv和kivy代码,appvariables.py和draw_a_card()的函数和字典

是否还有一种方法可以使用常用变量而不是appvariables.py中的card_draw_dict来输出我的已绘制卡片

非常感谢你们

main.py:

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, WipeTransition
from kivy.properties import ObjectProperty, StringProperty
from kivy.uix.floatlayout import FloatLayout
from AppVariables import *



class ScreenOne(Screen):
    pass

class ScreenTwo(Screen):
    pass

class ScreenThree(Screen):
    pass

class Manager(ScreenManager):

    screen_one = ObjectProperty(None)
    screen_two = ObjectProperty(None)
    screen_three = ObjectProperty(None)


class ScreensApp(App):

    def build(self):
        m = Manager(transition=WipeTransition())
        return m


    def draw_card(self, *args):
        draw_a_card(self, *args)
        some_var = card_drawn_dict[1]
        print(some_var)
        screen_one.mylabel.text = some_var


if __name__ == "__main__":
    ScreensApp().run()
#:kivy 1.8.0

<Manager>:
    id: screen_manager

    screen_one: screen_one
    screen_two: screen_two
    screen_three: screen_three

    ScreenOne:
        id:screen_one
        name: "Screen1"
        manager: screen_manager


    ScreenTwo:
        id: screen_two
        name: "Screen2"
        manager: screen_manager


    ScreenThree:
        id: screen_three
        name: "Screen3"
        manager: screen_manager

<ScreenOne>:
    Button:     
        text: "Start"
        on_press: root.manager.current = 'Screen2'
        size_hint: 0.3, 0.2
        pos_hint: {"x":0.35, "y":0.2}

<ScreenTwo>:
    Button:
        text: "Screen 3"
        on_press: root.manager.current = 'Screen3'
        size_hint: 0.3, 0.2
        pos_hint: {"x":0.35, "y":0.1}

    Button:
        text: "Karte ziehen"
        on_press: app.draw_card()
        size_hint: 0.3, 0.2
        pos_hint: {"x":0.35, "y":0.3}

    Label:
        id: mylabel
        text: ""
        size_hint: 0.3, 0.2
        pos_hint: {"x":0.35, "y":0.6}

<ScreenThree>:
    Button:
        text: "Screen 1"
        on_press: root.manager.current = 'Screen1'
# Module: AppVariables.py
from random import randint

# Global variables
card_dict = {1:'Ace of Hearts', 2:'King of Hearts',
             3:'Ace of Diamonds', 4:'King of Diamonds',
             5:'Ace of Clubs', 6:'King of Clubs',
             7:'Ace of Spades', 8:'King of Spades'}
card_drawn_dict = {}

# Functions
def draw_a_card(self, *args):
        random_number = randint(1, 8)
        if random_number in card_dict:    
                card_drawn = card_dict[random_number]
                card_drawn_dict.update({1:card_drawn})
                #print(card_drawn)
                del card_dict[random_number]
        else:
                while not (random_number in card_dict):
                        if random_number == 1:
                                random_number = 8
                        else:
                                random_number -= 1 
                card_drawn = card_dict[random_number]
                card_drawn_dict.update({1:card_drawn})
                del card_dict[random_number]
屏幕。千伏:

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, WipeTransition
from kivy.properties import ObjectProperty, StringProperty
from kivy.uix.floatlayout import FloatLayout
from AppVariables import *



class ScreenOne(Screen):
    pass

class ScreenTwo(Screen):
    pass

class ScreenThree(Screen):
    pass

class Manager(ScreenManager):

    screen_one = ObjectProperty(None)
    screen_two = ObjectProperty(None)
    screen_three = ObjectProperty(None)


class ScreensApp(App):

    def build(self):
        m = Manager(transition=WipeTransition())
        return m


    def draw_card(self, *args):
        draw_a_card(self, *args)
        some_var = card_drawn_dict[1]
        print(some_var)
        screen_one.mylabel.text = some_var


if __name__ == "__main__":
    ScreensApp().run()
#:kivy 1.8.0

<Manager>:
    id: screen_manager

    screen_one: screen_one
    screen_two: screen_two
    screen_three: screen_three

    ScreenOne:
        id:screen_one
        name: "Screen1"
        manager: screen_manager


    ScreenTwo:
        id: screen_two
        name: "Screen2"
        manager: screen_manager


    ScreenThree:
        id: screen_three
        name: "Screen3"
        manager: screen_manager

<ScreenOne>:
    Button:     
        text: "Start"
        on_press: root.manager.current = 'Screen2'
        size_hint: 0.3, 0.2
        pos_hint: {"x":0.35, "y":0.2}

<ScreenTwo>:
    Button:
        text: "Screen 3"
        on_press: root.manager.current = 'Screen3'
        size_hint: 0.3, 0.2
        pos_hint: {"x":0.35, "y":0.1}

    Button:
        text: "Karte ziehen"
        on_press: app.draw_card()
        size_hint: 0.3, 0.2
        pos_hint: {"x":0.35, "y":0.3}

    Label:
        id: mylabel
        text: ""
        size_hint: 0.3, 0.2
        pos_hint: {"x":0.35, "y":0.6}

<ScreenThree>:
    Button:
        text: "Screen 1"
        on_press: root.manager.current = 'Screen1'
# Module: AppVariables.py
from random import randint

# Global variables
card_dict = {1:'Ace of Hearts', 2:'King of Hearts',
             3:'Ace of Diamonds', 4:'King of Diamonds',
             5:'Ace of Clubs', 6:'King of Clubs',
             7:'Ace of Spades', 8:'King of Spades'}
card_drawn_dict = {}

# Functions
def draw_a_card(self, *args):
        random_number = randint(1, 8)
        if random_number in card_dict:    
                card_drawn = card_dict[random_number]
                card_drawn_dict.update({1:card_drawn})
                #print(card_drawn)
                del card_dict[random_number]
        else:
                while not (random_number in card_dict):
                        if random_number == 1:
                                random_number = 8
                        else:
                                random_number -= 1 
                card_drawn = card_dict[random_number]
                card_drawn_dict.update({1:card_drawn})
                del card_dict[random_number]
填充屏幕2的标签 使用self.root.screen\u two.ids.mylabel.text=some\u var

使用变量 一副牌有52张扑克牌,4套牌(黑桃、红桃、钻石、梅花),每套牌有13个等级

例子 AppVariables.py main.py 千伏
#:kivy 1.11.0
#:导入WipeTransition kivy.uix.screenmanager.WipeTransition
:
transition:WipeTransition()
第一屏:第一屏
第二屏:第二屏
第三屏:第三屏
第一屏:
id:第一屏
名称:“屏幕1”
屏幕二:
id:屏幕2
名称:“屏幕2”
第三幕:
id:第三屏
名称:“屏幕3”
:
按钮:
正文:“开始”
按:root.manager.current='Screen2'
尺寸提示:0.3,0.2
pos_提示:{“x”:0.35,“y”:0.2}
:
按钮:
文本:“屏幕3”
按:root.manager.current='Screen3'
尺寸提示:0.3,0.2
pos_提示:{“x”:0.35,“y”:0.1}
按钮:
文字:“卡丁车齐亨”#抽牌
按:应用程序绘制卡()
尺寸提示:0.3,0.2
pos_提示:{“x”:0.35,“y”:0.3}
标签:
id:mylabel
案文:“”
尺寸提示:0.3,0.2
pos_提示:{“x”:0.35,“y”:0.6}
:
按钮:
文本:“屏幕1”
按:root.manager.current='Screen1'
输出

非常感谢您的帮助。:)