2014-03-04 30 views
0
def pop1(self): 
    pop = Popup(title='test',content=Image('boy.png'), 
       size_hint=(None,None)) 
    pop.open() 

然後在kv語言中,我試圖從按鈕on_press事件調用它。 kv文件的代碼是這樣的。如何加載圖像作爲在基維的彈出框

BoxLayout: 
    size:self.parent.size 
    orientation:'horizontal' 
    spacing:10 
    padding:5 
    Button: 
     text: 
     size_hint:.3,.3 
     on_press: 
      root.pop1() 

當我嘗試運行它,我得到一個錯誤如下:

: _container:容器 網格佈局: 填充:12 KeyError異常: 'pos_hint'

回答

2

首先, ,因爲你打電話root.pop1()root在這種情況下是BoxLayout我假設你定義了你的pop1函數在你從BoxLayout繼承的BoxLayout類中?如果是這樣,你基本上覆蓋了一個kivy課程,這會搞砸了。

第二個問題是,當您撥打時,應該是Image(source='boy.png')

最後,在按鈕中,您忘記將text設置爲一個值。

做你正在試圖完成什麼更好的辦法是用下面的代碼:

from kivy.app import runTouchApp 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.popup import Popup 
from kivy.uix.image import Image 
from kivy.lang import Builder 


kv = ''' 
BoxLayoutWithPopup: 
    orientation:'horizontal' 
    spacing:10 
    padding:5 
    Button: 
     text: 'Press me' 
     size_hint:.3,.3 
     on_press: 
      root.pop1() 
''' 


class BoxLayoutWithPopup(BoxLayout): 

    def pop1(self): 
     pop = Popup(title='test', content=Image(source='boy.png'), 
        size_hint=(None, None), size=(400, 400)) 
     pop.open() 


if __name__ == '__main__': 
    runTouchApp(Builder.load_string(kv)) 
+0

日Thnx爲解決@馬特 –

相關問題