Hi,
ist es mit wxPython möglich, ein Programm neustarten zu lassen? Z. B. Ein Dialogfeld fragt den Anwender, ob er das Programm neustarten möchte. Der Anwender klickt auf "Ja". Nun soll das Programm beendet werden und wieder neu geöffnet werden. Ist so etwas möglich? Wenn ja, wie?
Gruß
DHK
Programm neustarten
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
das würde ich mit einem 2ten python script lösen. Die Anwendung ruft das python script auf und beendet sich selbst. Das script schaut immer, ob die Anwendung noch geöffnet ist, wenn dies nicht mehr der Fall ist startet es die Anwendung.
Hallo, vielen Dank für deinen Tipp. Ich habe noch eine Frage. Habe folgenden Code:
Problem: Die Funktion OnJa() wird nicht aufgerufen. Wenn ich auf den Ja-Button drücke, müsste normalerweise "Hello" ausgegeben werden. Wird es aber nicht. Was habe ich falsch gemacht?
Gruß
DHK
Code: Alles auswählen
# .....
def OnChooseSkin(self, event):
inuse = file('skindata/inuse.txt', 'w')
inuse.write(string.lower(selected))
inuse.close()
dlg = wx.MessageDialog(self, dialog['skinchosen'], dialog['skinchosentitle'], wx.YES | wx.NO)
self.Bind(wx.EVT_BUTTON, self.OnJa, id=wx.ID_YES)
dlg.ShowModal()
dlg.Destroy()
def OnJa(self, event):
print "Hello"
Gruß
DHK
Opera ist noch immer der beste...
Machs doch einfach mit:
beziehungsweise:
Code: Alles auswählen
...
dlg = wx.MessageDialog(self, dialog['skinchosen'], dialog['skinchosentitle'], wx.YES | wx.NO)
dlg_value = dlg.ShowModal()
if dlg_value == wx.ID_YES:
print "Hello"
...
Code: Alles auswählen
...
dlg = wx.MessageDialog(self, dialog['skinchosen'], dialog['skinchosentitle'], wx.YES | wx.NO)
dlg_value = dlg.ShowModal()
if dlg_value == wx.ID_YES:
self.OnJa()
...
def OnJa(self):
print "Hello"
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek
In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Danke, name. Hast mir sehr geholfen.
Hauptskript:
Zweites Skript:
Leider funktioniert das nicht. Hat jemand eine andere Lösung des Problems für mich?
Gruß
DHK
Hallo! Wie mache ich denn das? Bisher mache ich das so (es klappt aber nicht):DatenMetzgerX hat geschrieben:das würde ich mit einem 2ten python script lösen. Die Anwendung ruft das python script auf und beendet sich selbst. Das script schaut immer, ob die Anwendung noch geöffnet ist, wenn dies nicht mehr der Fall ist startet es die Anwendung.
Hauptskript:
Code: Alles auswählen
#...
opena = 1
# ...
def OnJa(self):
opena = 0
Code: Alles auswählen
#!/usr/bin/env python(w)
# -*- coding: iso-8859-1 -*-
import helloworld
while True:
if helloworld.opena == 0:
print helloworld.opena
break
Gruß
DHK
Opera ist noch immer der beste...
So wird das nuex 
Das liesse sich entweder ueber sockets mit dem loopback device, oder aber, ueber ein file loesen, wo einer reinschreibt und der andere liest.
Ich faende sockets schoener

Hoffe ich konnte helfen

Das liesse sich entweder ueber sockets mit dem loopback device, oder aber, ueber ein file loesen, wo einer reinschreibt und der andere liest.
Ich faende sockets schoener

Code: Alles auswählen
"""
Client
"""
class mysocket:
def __init__(self, sock=None):
if sock is None:
self.sock = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
else:
self.sock = sock
def connect(self,host, port):
"""
Connects to host
"""
self.sock.connect((host, port))
def send(self,msg):
"""
Sends msg to the server
"""
sent = self.sock.send(msg+"\0")
def receive(self):
"""
Returns content sent by server
"""
end = ''
while 1:
chuck= self.sock.recv(1)
if(chuck != "\0"):
end += chuck
else:
break
return end
Code: Alles auswählen
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import socket
import time
import sys
"""
This module defines the server
"""
class Channel:
"""
This class defines one single player that's connected
"""
def __init__(self,channel,details):
self.channel = channel
self.details = details
self.done = False
def send(self,msg):
"""
Sends msg to the client
"""
sent = self.channel.send(msg+"\0")
def handleReceive(self):
"""
Handles the received content
"""
receive = self.receive()
if receive == "RESTART":
self.done = True
print "Restart"
#Start the other python script
if receive == "END":
sys.exit(0)
def receive(self):
"""
Returns content sent by client
"""
end = ''
while 1:
chunk= self.channel.recv(1)
if(chunk != "\0"):
end += chunk
else:
break
if end != '':
return end
def mainLoop(self):
while 1:
self.handleReceive()
if self.done:
return True
time.sleep(0.1)
class Main:
def __init__(self,port):
i = 0
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.bind(("", port))
self.sock.listen( 1 )
i = 0
while 1:
self.listen()
def listen(self):
channel, details = self.sock.accept()
client = Channel(channel, details)
client.mainLoop()
port = 92525
if __name__ == "__main__":
main = Main(port)
Und der server sagt dann:>>> sock = mysocket()
>>> sock.connect("127.0.0.1", 92525)
>>> sock.send("RESTART")
>>> sock = mysocket()
>>> sock.connect("127.0.0.1", 92525)
>>> sock.send("RESTART")
Das ganze ist aus einem pyGame Netzwerkspielchen von mir(etwas abgeaendert), deshalb die kommentareRestart
Restart

Hoffe ich konnte helfen
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek
In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.