如何在 python 中获取用户输入(Kivy 框架)
Posted
技术标签:
【中文标题】如何在 python 中获取用户输入(Kivy 框架)【英文标题】:How do I get user input in python (Kivy framework) 【发布时间】:2022-01-05 10:31:39 【问题描述】:我正在尝试用 python(Kivy 框架)制作一个软件,我的软件将能够测试 wifi 密码的强度。
我遇到了一个问题。如何将 .kv (kivy) 文件中的用户输入获取到 .py (python) 文件中?
.PY 文件:
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 Layout_For_App(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 Layout_For_App()
AndrdWifiApp().run()
.KV 文件:
<Layout_For_App>:
Label:
text: 'Developed By Anonymous'
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: 'Enter Wifi SSID'
id: input_value
size_hint: (0.5, 0.15)
pos_hint: 'x':0.49,'y':0.01
font_size: 40
我想从我的 .KV 文件中获取用户输入,然后将其存储在我的 .PY 文件中的 VARIABLE 中
This picture explains more, and it also displays how my GUI software looks like.
【问题讨论】:
您不会“将用户输入存储在 .py 文件中的变量中”——Python 源代码文件中的变量是程序员用来记住和引用内容的东西——当你用户获得软件,所有变量都已定义,您的程序应该按预期工作。你想对用户输入做什么?用户需要做什么? 我想用它作为wifi SSID(Wifi名称) 然后连接wifi 【参考方案1】:在您的 Layout_For_App
类中,您可以添加类似以下的方法:
def get_ssid(self):
self.ssid = self.ids.input_value.text # store the input in a variable
以kv
中的Button
为例,您可以在按下Button
时触发该方法:
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
on_press: root.get_ssid() # trigger the storage of user input.
【讨论】:
以上是关于如何在 python 中获取用户输入(Kivy 框架)的主要内容,如果未能解决你的问题,请参考以下文章