2017-05-29 200 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 –