千巷猫影
您当前正在将其添加到作为根的 Calc FloatLayout 中,并且每个屏幕都是该根的子项。如果您只想将其添加到一个屏幕,则需要调用该特定屏幕的 add_widgets 函数。一种选择是通过 id像下面这样更改kv文件 Screen: id: id_solverscreen name: "solverscreen"像下面这样更改py文件self.ids.id_solverscreen.add_widget(btn)蟒蛇文件from kivy.app import Appfrom kivy.lang import Builderfrom kivy.core.window import Windowfrom kivy.uix.floatlayout import FloatLayoutfrom kivy.uix.button import ButtonWindow.size = (300,625)window_x = Window.widthwindow_y = Window.heightBuilder.load_file("main.kv")class counter: def __init__(self): self.count = 2 def increase(self): self.count += 1b = counter()class Calc(FloatLayout): def testbutton(self,instance): btn = Button(text = "testing123", color = (1,1,1,1), size_hint =(.5,.05), pos = (0,(window_y-(window_y*(.07+(b.count*.05))))) ) b.increase() self.ids.id_solverscreen.add_widget(btn) # define the multiplication of a function def calculate(self, instance): f = float(self.flow.text) p = float(self.pressure.text) t = float(self.temperature.text) sg = float(self.specific_gravity.text) self.acfm.text = str(f) #str(f1.ACFM(f,p,t,sg)) I commented this out for the purpose of posting this in my questions.class test(App): def build(self): return Calc()if __name__=="__main__": test().run().kv 文件<calc>: flow: _flow pressure: _pressure temperature: _temperature specific_gravity: _specific_gravity acfm: _acfm FloatLayout: ScreenManager: id: screen_manager size: self.size Screen: name: "filescreen" FloatLayout: canvas: Color: rgb: 1,1,1 Rectangle: size: self.width, self.height pos: self.pos AnchorLayout: anchor_x: 'center' anchor_y: 'top' Label: canvas.before: Color: rgb: 1,1,1 Rectangle: size: self.size pos: self.pos Color: rgb: 0,0,0 Line: width: 1 rectangle: self.x,self.y,self.width,self.height size_hint: 1,.07 FilescreenButton: text: "Create New File" pos: 0,root.height-(root.height*(.07+.05)) on_press: root.testbutton(*args) Screen: id: id_solverscreen name: "solverscreen" GridLayout: cols:1 size_hint: 1,1 ScrollView: FloatLayout: canvas: Color: rgb: 1,1,1 Rectangle: size: self.width, self.height pos: self.pos size_hint: 1,1.5 GridLayout: cols:1 spacing: 1 pos_hint: {"top": (1),"left": 1} size_hint: .4, None row_default_height: root.height*.05 Label: text: "Inputs" color: 0,0,0,1 canvas.before: Color: rgb: 1,1,1 Rectangle: size: self.width,self.height pos: self.pos CustomLabel: text: "Flow" CustomLabel: text: "Pressure" CustomLabel: text: "Temperature" CustomLabel: text: "Specific Gravity" Label: text: "Results" color: 0,0,0,1 canvas.before: Color: rgb: 1,1,1 Rectangle: size: self.width,self.height pos: self.pos Button: text: "Calculate" on_press: root.calculate(*args) GridLayout: cols:1 spacing: 1 pos_hint: {"top": (1),"right": .7} size_hint: .3, None row_default_height: root.height*.05 Label: canvas.before: Color: rgb: 1,1,1 Rectangle: size: self.width,self.height pos: self.pos TextInput: text: "0" id: _flow TextInput: text: "0" id: _pressure TextInput: text: "0" id: _temperature TextInput: text: ".6" id: _specific_gravity Label: canvas.before: Color: rgb: 1,1,1 Rectangle: size: self.width,self.height pos: self.pos Label: id: _acfm color: 0,0,0,1 canvas.before: Color: rgba: .7,.7,.7,1 Rectangle: pos: self.pos size: self.size Color: rgb: 1,1,1 Line: width: 1 rectangle: self.x,self.y,self.width,self.height GridLayout: cols:1 spacing: 1 pos_hint: {"top": (1),"right": 1} size_hint: .3, None row_default_height: root.height*.05 Label: canvas.before: Color: rgb: 1,1,1 Rectangle: size: self.width,self.height/2 pos: self.pos CustomButton: text: "MMSCFD" CustomButton: text: "PSIG" CustomButton: text: "F" CustomButton: text: "SG" Label: canvas.before: Color: rgb: 1,1,1 Rectangle: size: self.width,self.height pos: self.pos CustomButton: text: "ACFM" AnchorLayout: anchor_x: 'left' anchor_y: 'bottom' GridLayout: cols: 4 size_hint: 1,.05 canvas: Color: rgb: 1,1,1 Rectangle: size: self.size pos: self.pos Button: text: "Files" on_press: screen_manager.current = 'filescreen' Button: text: "Solver" on_press: screen_manager.current = 'solverscreen'<CustomLabel@Label>: #font_size: (((self.width*5)+(self.height))/6)*.12 canvas.before: Color: rgb: 0,0,0 Rectangle: size: self.size pos: self.pos<CustomButton@Button>: background_color: .25,.25,.25,1 canvas.before: Color: rgba: .25,.25,.25,1 Rectangle: size: self.size pos: self.pos Line: width: .09 rectangle: self.x,self.y,self.width,self.height<FilescreenButton@Button>: size_hint: .5,.05 color: 0,0,0,1 background_color: 1,1,1,0 canvas: Color: rgb: 0,0,0 Line: width: 1 rectangle: self.x,self.y,self.width,self.height