私はPythonとKivyの初心者です。いくつかの進歩を遂げた後、私はレンガの壁にぶつかったし、インターネット検索の量は答えを見つけることができません。Kivy。レイアウトを変更する
私は、GridLayout選択メニューで始まるpython/kivyスクリプトを持っています。次に、「次へ」をクリックし、GridLayoutをBoxLayoutに置き換えて出力を表示します。
import sys
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.checkbox import CheckBox
from kivy.uix.gridlayout import GridLayout
from kivy.uix.pagelayout import PageLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.properties import StringProperty, ListProperty, DictProperty
from kivy.uix.widget import Widget
from brp_stats import *
from dice_roller import *
#from display import *
race = ''
statblock = ''
class Test(GridLayout):
def printcharacter(self,my_sb,my_cr,my_scm,my_scb):
printable_stats = print_stats(my_sb)
printable_rolls = print_rolls(my_cr)
printable_scm = print_scm(my_scm)
printable_scb = print_scb(my_scb)
self.clear_widgets()
self.add_widget(Label(text_size=(300, None),
text='Stats\n' + str(printable_stats)))
self.add_widget(Label(text_size=(300, None),
text='Rolls\n' + str(printable_rolls)))
self.add_widget(Label(text_size=(300, None),
text='SCM\n' + str(printable_scm)))
self.add_widget(Label(text_size=(300, None),
text='SCB\n' + str(printable_scb)))
wayout = Button(text='Way Out')
self.add_widget(wayout)
wayout.bind(on_press=self.canvas.clear)
# def bar():
# print ("BAR")
def human(self,a,b):
if b==True:
self.Status="human"
race=self.Status
statblock = human()
characteristic_rolls = rolls(statblock)
skill_category_modifiers = scm(statblock)
skill_category_bonuses = scb(statblock)
# TestApp.foo()
# Test.bar()
Test.printcharacter(\ self,statblock,characteristic_rolls,skill_category_modifiers,skill_category_bonuses)
class TestApp(App):
# def foo():
# print ("FOO")
def build(self):
self.title="BRP Character Generator"
return Test()
#### MAIN CODE ####
if __name__ == '__main__':
TestApp().run()
そしてKVスクリプトは、私は(この例では、人間の)オプションを選択している何が起こっている
<Test>:
cols: 2
canvas:
Color:
rgb: .2,.2,.2
Rectangle:
pos: self.pos
size: self.size
Label:
text: 'Human'
CheckBox:
group: 'race_group'
on_active: root.human(*args)
Button:
text: 'Next'
on_press: printcharacter()
です:Pythonスクリプトです。結果を表示する前に[次へ]をクリックするまで待つ必要があります。ただし、Humanを選択するとすぐに、結果はGridLayoutに即座に出力されます。
1)結果を表示する前に[次へ]をクリックするまで選択画面が表示されないのはなぜですか? 2)2番目の画面を表示すると、レイアウトをGridからBoxに切り替えるにはどうすればよいですか?
感謝の言葉をいただきました。
よろしく、 コリン
は(簡潔にするために編集された)通常の輸入 'クラスの表示(ウィジェット)の後に、私が試したものです= ')垂直' print_this =ラベル(テキスト= '押されたボタン1') layout.add_widget(print_this) クラスでTestApp(APP): デフ構築(自己): レイアウト=のGridLayout(COLS = 2) button1 =ボタン(テキスト= 'これを押す') layout.add_widget(button1) button1.bind (on_press = Display.print_a_label) return layout'それでも、BoxLayoutは表示されません –