Usernamen anzeigen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
DMD-OL
User
Beiträge: 134
Registriert: Samstag 26. Dezember 2015, 16:21
Wohnort: Oldenburg (Oldenburg)

Usernamen anzeigen

Beitragvon DMD-OL » Dienstag 20. Dezember 2016, 12:57

hi
ich würde in meinem code noch gern den usernamen in einem label anzeigen lassen.
ich bekomm das aber nicht richtig hin.
könnte mir bitte jemand helfen?
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import Tkinter
  5. import threading
  6. import socket
  7. import SocketServer
  8. import threading
  9. import sys
  10. import json
  11.  
  12. clientname = None
  13.  
  14. class MyTCPHandler(SocketServer.BaseRequestHandler):
  15.  
  16.     def handle(self):
  17.         global clientname
  18.         self.request.send("Der Server")
  19.         #self. = self.request.recv(1024)
  20.         self.username = str("Der Benutzer")
  21.         clientname.set_user(self.username)
  22.  
  23. class Start_Server():
  24.  
  25.     def set_user(self, username):
  26.         # der username kommt hier an
  27.         print("Hauptfenster hat den usernamen '%s' bekommen" % username)
  28.  
  29.     def main(self):
  30.  
  31.         backwin = Tkinter.Tk()
  32.         backwin.title('DMD-DATA.soft')
  33.         backwin.state('zoomed')
  34.         backwin.configure(background='black')
  35.  
  36.         start_Server = Tkinter.StringVar()
  37.         l_sf1 = Tkinter.Label(backwin,textvariable=(start_Server),font=('Arial', 8, 'bold'), height=3, width=25,
  38.          fg="#000000000",justify='left')
  39.         l_sf1.place(relx=.06, rely=.965, anchor="c")
  40.  
  41.         ########################################################################
  42.         #
  43.         # hier moechte ich gern den usernamen anzeigen lassen
  44.         #
  45.         start_Client = Tkinter.StringVar()
  46.         l_sf2 = Tkinter.Label(backwin,textvariable=(start_Client),font=('Arial', 8, 'bold'), height=3, width=35,
  47.          fg="#000000000",justify='left')
  48.         l_sf2.place(relx=.2, rely=.965, anchor="c")
  49.         #start_Client.set(???)
  50.         ########################################################################
  51.  
  52.         get_IP = [TCP_IP for TCP_IP in socket.gethostbyname_ex(socket.gethostname())[2] if not TCP_IP.startswith("127.")][:1]
  53.         if TCP_IP.startswith("127."):
  54.             start_Server.set("Server nicht gestartet...\nKEIN W-LAN VERFÜGBAR!")
  55.             start_Client.set("Um den Server starten zu können,\nmuß eine W-LAN-Verbindung vorliegen!")
  56.         else:
  57.             TCP_PORT = 9090
  58.             start_Server.set("Server gestartet...\nIP-Adresse: {}".format(TCP_IP))
  59.             server = SocketServer.TCPServer((TCP_IP, TCP_PORT), MyTCPHandler)
  60.  
  61.             thread = threading.Thread(target=server.serve_forever)
  62.             thread.start()
  63.  
  64.         b1 = Tkinter.Button(backwin, text=("\nSTART\n"), font=('Arial', 10, 'bold'), width=20,
  65.          relief="raised", borderwidth=3, fg='#000000000', justify='center',command=lambda:self.haupt_Start(backwin))
  66.         b1.place(relx=.51, rely=.3, anchor="c")
  67.  
  68.         def quit(backwin):
  69.             try:
  70.                 server.shutdown()
  71.                 server.server_close()
  72.             except:
  73.                 pass
  74.             backwin.destroy()
  75.             sys.exit()
  76.  
  77.         b2 = Tkinter.Button(backwin, text=("\nBEENDEN\n"), font=('Arial', 10, 'bold'), width=20,
  78.          relief="raised", borderwidth=3, fg='#000000000', justify='center',command=lambda:quit(backwin))
  79.         b2.place(relx=.51, rely=.45, anchor="c")
  80.  
  81.         backwin.protocol("WM_DELETE_WINDOW", quit)
  82.         backwin.mainloop()
  83.  
  84.  
  85. if __name__ == '__main__':
  86.     hintergrund = Start_Server()
  87.     clientname=hintergrund
  88.     hintergrund.main()
Zuletzt geändert von BlackJack am Dienstag 20. Dezember 2016, 13:41, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 6000
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Usernamen anzeigen

Beitragvon Sirius3 » Dienstag 20. Dezember 2016, 13:19

@DMD-OL: jedes mal sieht Dein Code wieder anders aus, nur der fehlerhafte Schrott bleibt gleich. `get_IP` wird jetzt gar nicht mehr benutzt. Statt dessen die interne TCP_IP-Variable, die sehr wohl mit "127." anfangen kann, obwohl Dein WLAN aktiv ist. Das ist einfach nur falsch und völlig unnötig.

Ich weiß nicht, wie oft Dir schon gesagt wurde, dass verschachtelte Funktionen und global in einem ordentlichen Programm nichts verloren haben. BaseRequestHandler hat z.B. ein server-Attribut, mit dem man auf übergeordnete Variablen zugreifen kann. Start_Server ist keine Klasse, das ist nur eine main-Funktion.

Zurück zu „Netzwerkprogrammierung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder