2014-04-03 47 views
0

我想寫會使用3個不同的佈局來把屏幕分割成一個非常基本的Kivy程序創建一個控制檯:在Kivy

  • 頭(在屏幕的頂部)
  • 文本區(在屏幕的中間)
  • 控制檯(在屏幕的底部)

到目前爲止,我想用一個主網格佈局,其中我用3個不同的floatLayout。

下面的代碼是什麼樣子:

class Logo(App): 

    def build(self): 
     layout = GridLayout(rows=3) 
     layoutTop = FloatLayout(size=(100,300)) 
     layoutMid = FloatLayout(size=(100,300)) 
     layoutDown = FloatLayout(size=(100,300)) 

     logo = Image(source='imagine.png',size_hint=(.25,.25),pos=(30,380)) 
     blank = Label(text='', font_size = '25sp',pos=(-200,100)) 
     titre = Label(text='#LeCubeMedia',font_size='40sp',pos=(0,280)) 
     ip = Label(text='192.168.42.1',font_size='25sp',pos=(250,280)) 

     layoutTop.add_widget(titre) 
     layoutTop.add_widget(logo) 
     layoutTop.add_widget(ip) 
     layoutMid.add_widget(blank) 

     layout.add_widget(layoutTop) 
     layout.add_widget(layoutMid) 

     return layout 

if __name__ == '__main__': 

    Logo().run() 

其實我的問題是關於控制檯的創建。我已經閱讀了很多Kivy docs,但我仍然在尋找一種很好的方法來實現這種類型的小部件。

您認爲如果我將一個Python print發送到我的Kivy應用程序中,然後在需要發送其他內容時立即刷新(以刪除以前的打印內容),您會如何?這樣它就會像控制檯一樣。但是,到目前爲止,我沒有太多想法。

任何想法?

回答

2

我已經在基維看到了兩種調音臺。首先是scrollview中的多行textinput,您可以在textinput中將新文本附加到舊文本中。第二個是ScrollView中的BoxLayout或GridLayout,其中每個控制檯輸出是佈局中的單獨標籤。

+0

您是否有任何代碼段代碼?我幾乎不知道如何編寫這種類型的小部件。 – hacks4life

+0

這是一個製作Python REPL的嘗試。它還沒有工作,但類似控制檯的部分。 https://github.com/brousch/krepla/tree/master/krepla – brousch

+0

完美,謝謝。 – hacks4life

2

This是嘗試用kivy試一下的東西,代碼是舊的,你可能需要調整一下,使它與最新的kivy運行。 Kivy設計師也包括這一點。這是使用兩個文本輸入的簡單方法,其中1個用於歷史記錄,另一個用於輸入。

更好的方法來做一個適當的控制檯將使用pyte並直接在角色的畫布上繪製字符。這樣就可以免費獲得VT仿真。

+0

感謝這兩個git回購。只是,什麼是VT仿真? – hacks4life

+0

http://en.wikipedia.org/wiki/Terminal_emulator –