Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用按钮(下拉)文本作为Kivy在Python中的变量?_Python_Variables_Button_Kivy_Dropdown - Fatal编程技术网

如何使用按钮(下拉)文本作为Kivy在Python中的变量?

如何使用按钮(下拉)文本作为Kivy在Python中的变量?,python,variables,button,kivy,dropdown,Python,Variables,Button,Kivy,Dropdown,我正在与Kivy建立几个下拉列表以获取日期: 下拉日、下拉月等 但是对于下拉日,我需要知道年份和月份来计算天数 因此,我想使用“年份下拉列表”和“月份下拉列表”的值来计算天数。例如,2019年11月,我会有一个30个按钮的下拉列表 这些问题是: 要运行程序,Python需要月和年的初始值,但在开始时,按钮的值是一个字符串:“Année”,在法语中表示年,对于月按钮也是如此 如果我给python一个月和年的随机值,它将运行,但当我在GUI中选择一年中的另一个月时,天数不会更新 -->似乎无法使

我正在与Kivy建立几个下拉列表以获取日期:

下拉日、下拉月等

但是对于下拉日,我需要知道年份和月份来计算天数

因此,我想使用“年份下拉列表”和“月份下拉列表”的值来计算天数。例如,2019年11月,我会有一个30个按钮的下拉列表

这些问题是:

  • 要运行程序,Python需要月和年的初始值,但在开始时,按钮的值是一个字符串:“Année”,在法语中表示年,对于月按钮也是如此
  • 如果我给python一个月和年的随机值,它将运行,但当我在GUI中选择一年中的另一个月时,天数不会更新
-->似乎无法使用链接按钮值

int(button.text)
以下是我节目的主要部分。 我写了以下5个下拉列表(这一个是2019年到2020年的):

然后我想使用yearbutton.text来定义daybutton,如下所示:

dropdown3=DropDown()
        for d in range(1,calendar.monthrange(int(yearbutton.text),int(monthbutton.text))[1]+1):
            btn=Button(text='%d' %d,size_hint_y=None,height=44)
            btn.bind(on_release=lambda btn: dropdown3.select(btn.text))
            dropdown3.add_widget(btn)


        daybutton=Button(text='Jour',size_hint=(None,None))
        daybutton.bind(on_release=dropdown3.open)

        dropdown3.bind(on_select=lambda instance,value3:setattr(daybutton,'text',value3))
当然,这个错误发生在“for”行中:

因为我的“yearbutton”的初始值是一个字符串

雷普雷克斯:

import calendar
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.dropdown import DropDown
from kivy.app import App


class Design(GridLayout):
    def __init__(self,**kwargs):
        super(Design,self). __init__(**kwargs)
        self.cols=1 #cols du widget button

        self.inside = GridLayout() #creation d'un widget-layout
        self.inside.cols=4

        dropdown1=DropDown()
        for month in range (1,13):
            btn = Button(text='%d' % month, size_hint_y=None, height=44)
            btn.bind(on_release=lambda btn: dropdown1.select(btn.text))
            dropdown1.add_widget(btn)

        monthbutton = Button(text='Mois', size_hint=(None, None))
        monthbutton.bind(on_release=dropdown1.open)

        dropdown1.bind(on_select=lambda instance, value1: setattr(monthbutton, 'text', value1))

        dropdown3=DropDown()
        for d in range(1,calendar.monthrange(2019,int(monthbutton.text))[1]+1):
            btn=Button(text='%d' %d,size_hint_y=None,height=44)
            btn.bind(on_release=lambda btn: dropdown3.select(btn.text))
            dropdown3.add_widget(btn)


        daybutton=Button(text='Jour',size_hint=(None,None))
        daybutton.bind(on_release=dropdown3.open)

        dropdown3.bind(on_select=lambda instance,value3:setattr(daybutton,'text',value3))

        self.inside.add_widget(daybutton)
        self.inside.add_widget(monthbutton)

        self.add_widget(self.inside)

class MyApp(App):
    def build(self):
        return Design()

if __name__=="__main__":
    MyApp().run()

最后使用Kivy日历,更简单

提供一个答案(我在问题中添加了:)
ValueError: invalid literal for int() with base 10: 'Année'
import calendar
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.dropdown import DropDown
from kivy.app import App


class Design(GridLayout):
    def __init__(self,**kwargs):
        super(Design,self). __init__(**kwargs)
        self.cols=1 #cols du widget button

        self.inside = GridLayout() #creation d'un widget-layout
        self.inside.cols=4

        dropdown1=DropDown()
        for month in range (1,13):
            btn = Button(text='%d' % month, size_hint_y=None, height=44)
            btn.bind(on_release=lambda btn: dropdown1.select(btn.text))
            dropdown1.add_widget(btn)

        monthbutton = Button(text='Mois', size_hint=(None, None))
        monthbutton.bind(on_release=dropdown1.open)

        dropdown1.bind(on_select=lambda instance, value1: setattr(monthbutton, 'text', value1))

        dropdown3=DropDown()
        for d in range(1,calendar.monthrange(2019,int(monthbutton.text))[1]+1):
            btn=Button(text='%d' %d,size_hint_y=None,height=44)
            btn.bind(on_release=lambda btn: dropdown3.select(btn.text))
            dropdown3.add_widget(btn)


        daybutton=Button(text='Jour',size_hint=(None,None))
        daybutton.bind(on_release=dropdown3.open)

        dropdown3.bind(on_select=lambda instance,value3:setattr(daybutton,'text',value3))

        self.inside.add_widget(daybutton)
        self.inside.add_widget(monthbutton)

        self.add_widget(self.inside)

class MyApp(App):
    def build(self):
        return Design()

if __name__=="__main__":
    MyApp().run()