(Npyscreen) 如何将功能实现到采摘小部件中?
(Npyscreen) How to implement functions into picking widget?
我的 npyscreen 应用程序有问题,它隐含地能够关闭或重新启动整个 LAN(我老师的小项目)。我创建了带有两个测试功能的拾取小部件,以检查应用程序是否正常工作:
def test_1():
if True:
file = open("test_1.txt", "w")
file.write("This file is created because option 1 had been activated")
file.close()
else:
pass
def test_2():
if True:
file = open("test_2.txt", "w")
file.write("This file is created because option 2 had been activated")
file.close()
else:
pass
class RatScreen(npyscreen.ActionForm):
def create(self):
# elf.show_atx = 20
self.show_aty = 4
self.add(npyscreen.TitleFixedText, name="Description:", value="Remote Access Tool is small app designed to manage machines in local network")
self.add(npyscreen.TitleFixedText, name="Active computers:", value=active_computers)
self.nextrely += 1
self.add(npyscreen.TitleSelectOne, max_height=4, value=[test_1(), test_2()], name="Choose option", values=["Option 1", "Option 2"], scroll_exit=True)
def on_ok(self):
ok_cancel = npyscreen.notify_ok_cancel("Are you sure you want to execute selected task?", "Warning", editw=2)
if ok_cancel == True:
self.parentApp.setNextForm(None)
else:
self.parentApp.setNextFormPrevious
def on_cancel(self):
self.parentApp.setNextForm(None)
class RAT(npyscreen.NPSAppManaged):
def onStart(self):
self.addForm('MAIN', RatScreen, name='Remote Access Tool v1.1', lines=20)
if __name__ == '__main__':
active_computers = []
# ping()
app = RAT().run()
然后问题就出现了,每次启动应用程序后,它都会立即创建两个文件。
有人可以帮我解决这个问题吗?谢谢!
class RatScreen(npyscreen.ActionForm):
def create(self):
# elf.show_atx = 20
self.show_aty = 4
self.add(npyscreen.TitleFixedText, name="Description:", value="Remote Access Tool is small app designed to manage machines in local network")
self.add(npyscreen.TitleFixedText, name="Active computers:", value=active_computers)
self.nextrely += 1
self.option = self.add(npyscreen.TitleSelectOne, max_height=4, name="Choose option", values=["Option 1", "Option 2"], scroll_exit=True)
def on_ok(self):
ok_cancel = npyscreen.notify_ok_cancel("Are you sure you want to execute selected task?", "Warning", editw=2)
if ok_cancel:
if self.option.values[self.option.value[0]] == "Option 1":
test_1()
else:
test_2()
self.parentApp.setNextForm(None)
else:
self.parentApp.setNextFormPrevious
def on_cancel(self):
self.parentApp.setNextForm(None)
问题是您将两个选项都设置为默认值(value=[test_1(), test_2()])。希望能帮助到你。
我的 npyscreen 应用程序有问题,它隐含地能够关闭或重新启动整个 LAN(我老师的小项目)。我创建了带有两个测试功能的拾取小部件,以检查应用程序是否正常工作:
def test_1():
if True:
file = open("test_1.txt", "w")
file.write("This file is created because option 1 had been activated")
file.close()
else:
pass
def test_2():
if True:
file = open("test_2.txt", "w")
file.write("This file is created because option 2 had been activated")
file.close()
else:
pass
class RatScreen(npyscreen.ActionForm):
def create(self):
# elf.show_atx = 20
self.show_aty = 4
self.add(npyscreen.TitleFixedText, name="Description:", value="Remote Access Tool is small app designed to manage machines in local network")
self.add(npyscreen.TitleFixedText, name="Active computers:", value=active_computers)
self.nextrely += 1
self.add(npyscreen.TitleSelectOne, max_height=4, value=[test_1(), test_2()], name="Choose option", values=["Option 1", "Option 2"], scroll_exit=True)
def on_ok(self):
ok_cancel = npyscreen.notify_ok_cancel("Are you sure you want to execute selected task?", "Warning", editw=2)
if ok_cancel == True:
self.parentApp.setNextForm(None)
else:
self.parentApp.setNextFormPrevious
def on_cancel(self):
self.parentApp.setNextForm(None)
class RAT(npyscreen.NPSAppManaged):
def onStart(self):
self.addForm('MAIN', RatScreen, name='Remote Access Tool v1.1', lines=20)
if __name__ == '__main__':
active_computers = []
# ping()
app = RAT().run()
然后问题就出现了,每次启动应用程序后,它都会立即创建两个文件。
有人可以帮我解决这个问题吗?谢谢!
class RatScreen(npyscreen.ActionForm):
def create(self):
# elf.show_atx = 20
self.show_aty = 4
self.add(npyscreen.TitleFixedText, name="Description:", value="Remote Access Tool is small app designed to manage machines in local network")
self.add(npyscreen.TitleFixedText, name="Active computers:", value=active_computers)
self.nextrely += 1
self.option = self.add(npyscreen.TitleSelectOne, max_height=4, name="Choose option", values=["Option 1", "Option 2"], scroll_exit=True)
def on_ok(self):
ok_cancel = npyscreen.notify_ok_cancel("Are you sure you want to execute selected task?", "Warning", editw=2)
if ok_cancel:
if self.option.values[self.option.value[0]] == "Option 1":
test_1()
else:
test_2()
self.parentApp.setNextForm(None)
else:
self.parentApp.setNextFormPrevious
def on_cancel(self):
self.parentApp.setNextForm(None)
问题是您将两个选项都设置为默认值(value=[test_1(), test_2()])。希望能帮助到你。