es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo obtengo la entrada del usuario en Python (marco de trabajo Kivy)?

Estoy intentando crear un software en python (marco Kivy), que sea capaz de probar la fuerza de las contraseñas wifi.

Me he encontrado con un problema. ¿Cómo obtengo la entrada del usuario en mi archivo .kv (kivy) en mi archivo .py (python)?

.PY FILE:

from kivy.app import App
from kivy.properties import StringProperty
from kivy.uix.floatlayout import FloatLayout
try:
    from wifidroid.wifi import WifiManager
except:
    pass
from kivy.uix.textinput import TextInput
import kivymd, kivy
try:
    import wifidroid
except:
    pass
from kivy.uix.label import Label
from kivy.uix.button import Button

text = 'testttt'

try:
    wifi = WifiManager()
    wifi.startScan()
    wifi.EnabledWifi(True)
    for i in range(wifi.ScanResults.size()):
        ssid = [wifi.ScanResults.get(i).SSID]
        bssid = [wifi.ScanResults.get(i).BSSID]
        levell = [wifi.ScanResults.get(i).level]
        text += ssid[0] + " " + bssid[0] + " " + str(levell[0])
except:
    pass

try:
    wifi.ConnectWifiWpa("WifiName", "WifiPassword")
except:
    pass

wifi.ConnectWifiWep("WifiName", "WifiPassword")

wifi.ConnectWifiPublic("WifiName")


class LayoutForApp(FloatLayout):
    output = StringProperty()
    input = StringProperty()

def __init__(self, **kwargs):
    super().__init__(**kwargs)
    self.ids.label_output.text = text
    self.output = text

pass


class AndrdWifiApp(App):
    def build(self):
        return LayoutForApp()

AndrdWifiApp().run()

.KV FILE:

<layoutforapp>:
    Label:
        text: 'Desarrollado por Anónimo'
        pos_hint: {'x':0, 'y':0.45}

Label:
    text: 'OUTPUT' + root.output
    id: label_output
    background_color: (1, 1, 1, 1)
    size_hint: (0.451, 0.7)
    pos_hint: {'x':0.27, 'y':0.17}
    valign: "middle"
    halign: "left"
    color: (0,1,0)
    canvas.before:
        Color:
            rgba: self.background_color
        Rectangle:
            size: self.size
            pos: self.pos
    border: 3, 3

Button:
    text: 'CRACK'
    background_color: 1, 0, 0, 1
    color: 0, 1, 1
    size_hint: (0.4, 0.15)
    pos_hint: {'x':0.0199, 'y':0.01}
    font_size: 30

TextInput:
    text: 'Ingrese el SSID de Wifi'
    id: input_value
    size_hint: (0.5, 0.15)
    pos_hint: {'x':0.49, 'y':0.01}
    font_size: 40

Quiero obtener la entrada del usuario desde mi archivo .KV, luego almacenarla en una VARIABLE en mi archivo .PY. Este es el enlace a una imagen que explica más y también muestra cómo se ve mi software GUI.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener la entrada del usuario desde el archivo .kv y almacenarla en una variable en el archivo .py, puede seguir los siguientes pasos:

    1. Añada un id al widget TextInput en el archivo .kv, así:
      TextInput:
          id: wifi_ssid_input
          text: 'Ingrese el SSID de Wifi'
          ...
      
    2. En el archivo .py, puede acceder a este widget TextInput y su texto usando la notación self.root.ids. Entonces puede agregar la siguiente línea de código dentro de la clase Layout_For_App:
      wifi_ssid = self.root.ids.wifi_ssid_input.text
      

      Esto almacenará el texto ingresado por el usuario en la variable ‘wifi_ssid’.

    3. Luego, puede usar esta variable ‘wifi_ssid’ en su código de prueba de contraseña de WiFi.

    Aquí está el archivo .py actualizado con estos cambios:

    from kivy.app import App
    from kivy.properties import StringProperty
    from kivy.uix.floatlayout import FloatLayout
    try:
        from wifidroid.wifi import WifiManager
    except:
        pass
    from kivy.uix.textinput import TextInput
    import kivymd, kivy
    try:
        import wifidroid
    except:
        pass
    from kivy.uix.label import Label
    from kivy.uix.button import Button
    
    text = 'testttt'
    
    try:
        wifi = WifiManager()
        wifi.startScan()
        wifi.EnabledWifi(True)
        for i in range(wifi.ScanResults.size()):
            ssid = [wifi.ScanResults.get(i).SSID]
            bssid = [wifi.ScanResults.get(i).BSSID]
            levell = [wifi.ScanResults.get(i).level]
            text += ssid[0] + " " + bssid[0] + " " + str(levell[0])
    except:
        pass
    
    try:
        wifi.ConnectWifiWpa("NombreWifi", "ContraseñaWifi")
    except:
        pass
    
    #wifi.ConnectWifiWep("NombreWifi", "ContraseñaWifi")
    #wifi.ConnectWifiPublic("NombreWifi")
    
    class Layout_For_App(FloatLayout):
        output = StringProperty()
        input = StringProperty()
    
        def __init__(self, **kwargs):
            super().__init__(**kwargs)
            self.ids.label_output.text = text
            self.output = text
    
        def test_wifi_password(self):
            wifi_ssid = self.root.ids.wifi_ssid_input.text
            # Use wifi_ssid in your code to test the password for this ssid
    
        pass
    
    
    class AndrdWifiApp(App):
        def build(self):
            return Layout_For_App()
    
    
    AndrdWifiApp().run()
    

    Y aquí está el archivo .kv actualizado con un botón que llama a la función ‘test_wifi_password’ cuando se presiona:

    “`kv
    :
    Label:
    text: ‘Desarrollado por Anónimo’
    pos_hint: {“x”:0,”y”:0.45}

    Label:
        text: 'SALIDA' + root.output
        id: label_output
        background_color: (1, 1, 1, 1)
        size_hint: (0.451, 0.7)
        pos_hint: {"x":0.27,"y":0.17}
        valign: "middle"
        halign: "left"
        color: (0,1,0)
        canvas.before:
            Color:
                rgba: self.background_color
            Rectangle:
                size: self.size
                pos: self.pos
        border: 3, 3
    
    Button:
        text: 'CRACKEAR'
        background_color: 1, 0, 0, 1
        color: 0, 1, 1
        size_hint: (0.4, 0.15)
        pos_hint: {"x":0.0199,"y":0.01}
        font_size: 30
        on_press: root.test_wifi_password()
    
    TextInput:
        id: wifi_ssid_input
        text: 'Ingrese el SSID de Wifi'
        size_hint: (0.5, 0.15)
        pos_hint: {'x':0.49,'y':0.01}
        font_size: 40
    

    “`

Comments are closed.