2017-05-29 260 views
0

我基于文件夹中有多少声音文件动态创建按钮,但我遇到了无法按任何按钮的问题。我尝试查找教程或类似的问题,但它似乎应该是正确的,但是当我运行它时,我得到一个带有按钮的窗口,但按下按钮时什么也不做。Kivy按钮无法按下

import os, glob 

from os.path import isfile, join 
from os import listdir 
from kivy.uix.gridlayout import GridLayout 
from kivy.uix.button import Button 
from kivy.uix.label import Label 
from kivy.config import Config 
from kivy.app import App 

Config.set('graphics', 'borderless', False) 
Config.set('graphics', 'width', '500') 
Config.set('graphics', 'height', '300') 

class Soundboard(GridLayout): 
def soundSearch(self): 
    os.chdir("./sound") 
    self.sounds = [] 
    for Wav in glob.glob("*.wav"): 
     self.sounds.append(Wav) 
    for Flac in glob.glob("*.flac"): 
     self.sounds.append(Flac) 
    for mp3 in glob.glob("*.mp3"): 
     self.sounds.append(mp3) 

def __init__(self,**kwargs): 
    super(Soundboard, self).__init__(**kwargs) 
    self.soundSearch() 
    self.cols = 3 
    for sound in self.sounds: 
     self.button = Button(text=os.path.splitext(sound)[0]) 
     self.button.bind(on_press=lambda x:self.clk()) 
     self.add_widget(self.button) 
    self.row_force_default = True 
    self.row_default_height = 40 
    self.padding = [50, 10] 
    self.spacing = 5 

def clk(self, *args): 
    print('The button is pushed') 
class MyApp(App): 
    def build(self): 
     return Soundboard() 

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

回答

0

在您提供的代码中存在缩进问题。除此之外,代码工作正常,我:

import glob 
import os 

from kivy.app import App 
from kivy.config import Config 
from kivy.uix.button import Button 
from kivy.uix.gridlayout import GridLayout 

Config.set('graphics', 'borderless', False) 
Config.set('graphics', 'width', '500') 
Config.set('graphics', 'height', '300') 

class Soundboard(GridLayout): 
    def soundSearch(self): 
     self.sounds = [] 
     os.chdir("./sound") 
     for Wav in glob.glob("*.wav"): 
      self.sounds.append(Wav) 
     for Flac in glob.glob("*.flac"): 
      self.sounds.append(Flac) 
     for mp3 in glob.glob("*.mp3"): 
      self.sounds.append(mp3) 

    def __init__(self,**kwargs): 
     super(Soundboard, self).__init__(**kwargs) 
     self.soundSearch() 
     self.cols = 3 
     for sound in self.sounds: 
      self.button = Button(text=os.path.splitext(sound)[0]) 
      self.button.bind(on_press=lambda x: self.clk()) 
      self.add_widget(self.button) 
     self.row_force_default = True 
     self.row_default_height = 40 
     self.padding = [50, 10] 
     self.spacing = 5 

    def clk(self, *args): 
     print('The button is pushed') 

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

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

Works as expected

+0

我固定的缩进,但是当按钮被您正在使用什么版本的Python和kivy推 –

+0

它仍然不会做什么?你运行这个确切的代码或其他东西吗?你有与此代码关联的.kv文件吗? –

+0

我正在使用Python 2.7,Kivy 1.9.1,并且没有与此代码关联的.kv文件,我使用一些名为Script –