Und zwar habe ich ein Problem mit multiprocessing.
Ich schreibe zurzeit mit Bottle an einer Webframework und dabei möchte ich über ein GTK-dialog mehrere Dateien auswählen.
Das mit den Dateien funktioniert schon, aber ich muss das Programm in einen unabhängigen Prozess auslagern, weil das sonst auf den Serverprozess läuft.
Deswegen kann ich das Programm nicht schließen.
Meine Frage ist wie ich einen Unabhängigen Prozess erzeugen kann und der auch das GTK programm schließen lässt?
Codes:
Upload-Teil, wo der Unabhängige Prozess sein soll(filechooser())
Code: Alles auswählen
@route('/action/upload', method='POST')
def do_upload():
result_queue = Queue()
def filechooser():
g = PictureWall_gui.Gui()
g.dialog()
files = g.getfiles()
result_queue.put(files)
gui = Process(target=filechooser)
gui.start()
gui.run()
cssfile = module.configloader.getCSSconfig()
newFileList=[]
for file in result_queue.get():
file = file.replace("/", "&")
newFileList.append(file)
return template("templates/album_after_upload.tpl", css=cssfile, files=newFileList)
aber es existiert noch keine GUI di bau ich später ein(app)
Code: Alles auswählen
def main():
server = Process(target=PictureWall_server.run_server)
server.start()
app = Process(target=PictureWall_gui.Gui)
app.start()
app.join()
server.terminate()
Code: Alles auswählen
from gi.repository import Gtk
import module.configloader
class PictureWall(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
self.buttonbox = None
module.configloader.setConfigs()
self.connect("destroy", Gtk.main_quit)
def dialog(self):
self.buttonbox = Gtk.HButtonBox()
self.add(self.buttonbox)
button = Gtk.Button(label="Fortfahren")
button.connect("clicked", self.on_close_clicked)
self.buttonbox.add(button)
dialog = Gtk.FileChooserDialog(title="FileChooserDialog", parent=self, buttons=(Gtk.STOCK_OK, Gtk.ResponseType.OK, Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
dialog.set_select_multiple(True)
#add_filters(dialog)
response = dialog.run()
if response == Gtk.ResponseType.OK:
print "Open clicked"
self.files = dialog.get_filenames()
elif response == Gtk.ResponseType.CANCEL:
print "Cancel clicked"
dialog.destroy()
dialog.destroy()
self.show_all()
Gtk.main()
def getfiles(self):
return self.files
def on_close_clicked(self, button):
print "Closing application"
Gtk.main_quit()
class Gui(PictureWall):
def __init__(self):
PictureWall.__init__(self)