Android 按Kivy中的按钮运行另一个类

Android 按Kivy中的按钮运行另一个类,android,python,function,class,Android,Python,Function,Class,我用kivy编写了一个应用程序,但它总共有3个类,其中一个是应用程序类,第二个是示例根类,第三个是我要运行的pscan calss 现在当我按下屏幕上的一个按钮。。。。所以它应该运行pscan类…这就是我想要的…我在下面给出了main.py和example.kv文件 MAIN.PY文件 from kivy.app import App import socket, sys, threading, os, time ################# LIBRARIES IMPORTED ###

我用kivy编写了一个应用程序,但它总共有3个类,其中一个是
应用程序类
,第二个是
示例根类
,第三个是我要运行的
pscan calss

现在当我按下屏幕上的一个按钮。。。。所以它应该运行pscan类…这就是我想要的…我在下面给出了main.py和example.kv文件

MAIN.PY文件

from kivy.app import App
import socket, sys, threading, os, time

################# LIBRARIES IMPORTED ##############


#####MY FIRST CLASS NAMED pscan ######

class pscan(threading.Thread):
    def __init__(self,ip, port):
        threading.Thread.__init__(self)
        self.ip = ip
            self.port = port
    def run(self):
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.settimeout(4)
            s.connect((socket.gethostbyname(self.ip), int(self.port)))
            print "\n[+] OPEN:",self.ip, self.port
            s.close()
        except:
            print "\n[!] CLOSE:",self.ip, self.port

target = 'www.google.com'
sport = 1
eport= 100


############ MY SECOND CLASS NAMED EampleRoot ########


class ExampleRoot(BoxLayout):

    def final(self,*args):

        while sport <= eport:
            work=pscan(target,sport) #run pscan class from Exampleroot class
            work.start()             #DID not working
            time.sleep(0.1)
            sport=sport+1



class ExampleApp(App):

    return ExampleRoot()

if __name__ == "__main__":
    ExampleApp().run()
从kivy.app导入应用
导入套接字、系统、线程、操作系统、时间
#################导入的库##############
#####我的第一堂课叫pscan######
pscan类(线程。线程):
def __;初始化(自身、ip、端口):
threading.Thread.\uuuuu init\uuuuuu(自)
self.ip=ip
self.port=端口
def运行(自):
尝试:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s、 设置超时(4)
s、 connect((socket.gethostbyname(self.ip)、int(self.port)))
打印“\n[+]打开:”,self.ip,self.port
s、 关闭()
除:
打印“\n[!]关闭:”,self.ip,self.port
target='www.google.com'
运动=1
eport=100
############我的第二个类名为EampleRoot########
类示例根目录(BoxLayout):
def最终版本(自身,*参数):

而sport您的应用程序类需要定义一个“build”方法,该方法返回您的根小部件。这是您的代码,尽管我不知道它试图做什么;-)

从kivy.app导入应用
导入套接字、系统、线程、操作系统、时间
从kivy.lang导入生成器
从kivy.uix.boxlayout导入boxlayout
Builder.load_字符串(“”)
:
按钮:
文本:“按我运行PSCAN类”
按:root.final()
''')
pscan类(线程。线程):
def __;初始化(自身、ip、端口):
threading.Thread.\uuuuu init\uuuuuu(自)
self.ip=ip
self.port=端口
def运行(自):
尝试:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s、 设置超时(4)
s、 connect((socket.gethostbyname(self.ip)、int(self.port)))
打印“\n[+]打开:”,self.ip,self.port
s、 关闭()
除:
打印“\n[!]关闭:”,self.ip,self.port
类示例根目录(BoxLayout):
运动=1
target='www.google.com'
eport=100
def最终版本(自身,*参数):

当self.sport时,您是否尝试将按钮规则嵌套在kv文件中的
?运行脚本时您看到了什么?你可能看不到按钮小部件,对吧?你收到任何错误消息吗?当然我可以看到按钮我不能加载buildozer字符串,因为我已经有一个带有main.py的kv文件。。。请给我任何解决方案,谢谢,我会将我的.kv文件的文本复制到main.py并通过buildozer字符串加载,谢谢
<Exampleroot>
        Button:
          text:"PRESS ME TO RUN PSCAN CLASS"
          on_press:root.final()
from kivy.app import App
import socket, sys, threading, os, time
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout

Builder.load_string('''
<Exampleroot>:
    Button:
        text:"PRESS ME TO RUN PSCAN CLASS"
        on_press:root.final()
''')


class pscan(threading.Thread):
    def __init__(self,ip, port):
        threading.Thread.__init__(self)
        self.ip = ip
        self.port = port

    def run(self):
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.settimeout(4)
            s.connect((socket.gethostbyname(self.ip), int(self.port)))
            print "\n[+] OPEN:",self.ip, self.port
            s.close()
        except:
            print "\n[!] CLOSE:",self.ip, self.port


class ExampleRoot(BoxLayout):
    sport = 1
    target = 'www.google.com'
    eport= 100

    def final(self,*args):
        while self.sport <= self.eport:
            work = pscan(self.target, self.sport) #run pscan class from Exampleroot class
            work.start()             #DID not working
            time.sleep(0.1)
            self.sport = self.sport + 1


class ExampleApp(App):
    def build(self):
        return ExampleRoot()

if __name__ == "__main__":
    ExampleApp().run()