I have an issue with npyscreen application, which implicitly will be able to turning off or rebooting entire LAN (small project for my teacher). I have created picking widget with two test functions in order to check if app works correctly:
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()
And there the problem appeared, after every start of the app, it immediately creates both files.
Can somebody help me with this issue? Thanks!
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)
The problem was that you made both options True as default (value=[test_1(), test_2()]). Hope it helps.