New layout dont displayed after removed all widgets from previous layout and deleted him in kivy-python

Viewed 19
from kivy.config import Config

Config.set("graphics", "resizable", '0')
Config.set("graphics", "width", '600')
Config.set("graphics", "height", '300')

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

def send(num):
    client.send(num.encode('utf-8'))

Window.clearcolor = (70 / 255, 79 / 255, 59 / 255, 1)

class UlSetApp(App):
    def build(self):
        self.value = GridLayout(cols=4)
        self.port = TextInput(text="port - ")
        self.host = TextInput(text="host - ")
        self.submit = Button(text="Connect", on_press=self.Submit)
        self.value.add_widget(self.port)
        self.value.add_widget(self.host)
        self.value.add_widget(self.submit)

        return self.value

    def Submit(self, obj):
        port = int(self.port.text)
        host = self.host.text
        client.connect((host,port))

        self.value.remove_widget(self.port)
        self.value.remove_widget(self.host)
        self.value.remove_widget(self.submit)

        del self.value

        self.b

    def b(self):
        box = GridLayout(cols=6, rows=3)

        btn_1 = Button(text='1', background_normal='button.jpg')
        btn_1.bind(on_press=lambda x: send('1'))
        box.add_widget(btn_1)

        btn_2 = Button(text='2', background_normal='button.jpg')
        btn_2.bind(on_press=lambda x: send('2'))
        box.add_widget(btn_2)

        btn_3 = Button(text='3', background_normal='button.jpg')
        btn_3.bind(on_press=lambda x: send('3'))
        box.add_widget(btn_3)

        btn_4 = Button(text='4', background_normal='button.jpg')
        btn_4.bind(on_press=lambda x: send('4'))
        box.add_widget(btn_4)

        btn_5 = Button(text='5', background_normal='button.jpg')
        btn_5.bind(on_press=lambda x: send('5'))
        box.add_widget(btn_5)

        btn_6 = Button(text='6', background_normal='button.jpg')
        btn_6.bind(on_press=lambda x: send('6'))
        box.add_widget(btn_6)

        btn_7 = Button(text='7', background_normal='button.jpg')
        btn_7.bind(on_press=lambda x: send('7'))
        box.add_widget(btn_7)

        btn_8 = Button(text='8', background_normal='button.jpg')
        btn_8.bind(on_press=lambda x: send('8'))
        box.add_widget(btn_8)

        btn_9 = Button(text='9', background_normal='button.jpg')
        btn_9.bind(on_press=lambda x: send('9'))
        box.add_widget(btn_9)

        btn_10 = Button(text='10', background_normal='button.jpg')
        btn_10.bind(on_press=lambda x: send('10'))
        box.add_widget(btn_10)

        btn_11 = Button(text='11', background_normal='button.jpg')
        btn_11.bind(on_press=lambda x: send('11'))
        box.add_widget(btn_11)

        btn_12 = Button(text='12', background_normal='button.jpg')
        btn_12.bind(on_press=lambda x: send('12'))
        box.add_widget(btn_12)

        btn_13 = Button(text='13', background_normal='button.jpg')
        btn_13.bind(on_press=lambda x: send('13'))
        box.add_widget(btn_13)

        btn_14 = Button(text='14', background_normal='button.jpg')
        btn_14.bind(on_press=lambda x: send('14'))
        box.add_widget(btn_14)

        btn_15 = Button(text='15', background_normal='button.jpg')
        btn_15.bind(on_press=lambda x: send('15'))
        box.add_widget(btn_15)

        btn_16 = Button(text='16', background_normal='button.jpg')
        btn_16.bind(on_press=lambda x: send('16'))
        box.add_widget(btn_16)

        btn_17 = Button(text='17', background_normal='button.jpg')
        btn_17.bind(on_press=lambda x: send('17'))
        box.add_widget(btn_17)

        btn_18 = Button(text='18', background_normal='button.jpg')
        btn_18.bind(on_press=lambda x: send('18'))
        box.add_widget(btn_18)

        return box



app = UlSetApp()
app.run()

User input host and port,press button to connect with server on socket-python, after connect need to display new layout with buttons.

How to do this?

Socket — Low-level networking interface. This module provides access to the BSD socket interface. It is available on all modern Unix systems, Windows, MacOS, and probably additional platforms.

1 Answers

You cannot add widgets to your App by just returning them from a method. Try replacing:

    del self.value

    self.b

with:

    self.value.add_widget(self.b())
Related