Problem ist das gtk.gdk.threads_init() nicht funktioniert bei mir
Selbst Programme die ich aus dem internet lade gehen nicht wo steht das sie funktionieren.
sobald ich gtk.gdk.thread_init() rausnehme starten die Programme!
Wenn ich es drinn habe öffnet sich ein kleines leeres Fenster das auf nichts reagiert!
Gibt es dafür iergendeine Lösung?
EDIT: Hier der Code
Code: Alles auswählen
#Hills Messenger
import gtk
import pygtk
import socket
import sys
import threading
class cchatwindow:
def delete_event(self, widget, event, data=None):
if self.bcd == True:
self.socket.close()
return False
def destroy(self, widget, data=None):
gtk.main_quit()
def textsend(self, widget, data=None):
if self.itext.get_text() is not "":
self.text += self.itext.get_text()+"\n"
self.socket.send(self.text)
self.textbuffer.set_text(self.text)
self.textview.scroll_to_iter(self.textbuffer.get_end_iter(), 0.0, True, 0.0, 0.0)
def itextclear(self,widget, data=None):
self.itext.set_text("")
def empf(self):
gtk.threads_enter()
msg = self.socket.recv(1024)
self.textbuffer.insert(self.textbuffer.get_end_iter(),msg+"\n")
gtk.threads_leave()
def disconnect(self, widget, data=None):
try:
self.socket.close()
except:
self.textbuffer.insert(self.textbuffer.get_end_iter(),"Disconnect fehlgeschlagen!\n")
else:
self.textbuffer.insert(self.textbuffer.get_end_iter(),"Erfolgreich disconnected!\n")
self.buttonc.show()
self.buttond.hide()
self.bcd = False
def connect(self, widget, data=None):
try:
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.connect(("127.0.0.1",51000))
except:
self.textbuffer.insert(self.textbuffer.get_end_iter(),"Verbinden fehlgeschlagen!\n")
else:
self.textbuffer.insert(self.textbuffer.get_end_iter(),"Erfolgreich verbunden!\n")
self.buttonc.hide()
self.buttond.show()
self.bcd = True
def __init__(self):
gtk.gdk.threads_init()
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_title("Hills Messenger")
self.window.set_default_size(300,300)
self.window.connect("delete_event", self.delete_event)
self.window.connect("destroy", self.destroy)
self.vbox = gtk.VBox(False,2)
self.hbox = gtk.HBox(True,0)
self.button = gtk.Button("Senden")
self.button.connect("clicked", self.textsend, None)
self.hbox.pack_start(self.button,True,True,0)
self.button.show()
self.button = gtk.Button("Clear")
self.button.connect("clicked", self.itextclear, None)
self.hbox.pack_start(self.button,True,True,0)
self.button.show()
self.buttonc = gtk.Button("Connect")
self.buttond = gtk.Button("Disconnect")
self.buttonc.connect("clicked", self.connect, None)
self.buttond.connect("clicked", self.disconnect, None)
self.hbox.pack_start(self.buttonc,False,False,0)
self.hbox.pack_start(self.buttond,False,False,0)
self.buttonc.show()
self.bcd = False
self.textview = gtk.TextView()
self.textview.set_editable(False)
self.textbuffer = self.textview.get_buffer()
self.text = ""
self.sw = gtk.ScrolledWindow()
self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.sw.add(self.textview)
adj = self.sw.get_vadjustment()
adj.set_value(adj.props.upper)
self.sw.show()
self.textview.show()
self.itext = gtk.Entry(0)
self.vbox2 = gtk.VBox(False,0)
self.vbox2.pack_start(self.sw, True, True, 0)
self.vbox.pack_start(self.itext, False, False, 0)
self.itext.show()
self.vbox.pack_start(self.hbox, False, False, 2)
self.hbox.show()
self.vbox.show()
self.vbox2.pack_start(self.vbox, False, False, 0)
self.vbox2.show()
self.window.add(self.vbox2)
self.window.show()
def main():
gtk.main()
return 0
if __name__ == "__main__":
cchatwindow()
main()