我的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()
有人可以帮我解决这个问题吗?谢谢!
答案 0 :(得分:1)
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)
问题在于您将两个选项都设为True(默认)( value = [test_1(),test_2()] )。希望能帮助到你。