2015-05-25 19 views
5

Wykonywanie bardzo prostej gry w kółko i krzyżyk w Pythonie za pomocą architektury P2P z gniazdami. Obecnie mój GUI ma przycisk z napisem "Utwórz", który otworzy się i narysuje nowe okno planszy gry, utworzy gniazdo, powiązać, odsłuchać i zaakceptować połączenie. Przycisk "Dołącz" otworzy się i narysuje nową grę i połączy się z tym "serwerem".Python: Wyświetlaj komunikat "Oczekiwanie na odtwarzacz ...", a gniazdo nasłuchuje połączenia

Próbuję pokazać komunikat "Czekam na gracza ...", gdy tworzysz grę, przycisk anulowania, aby zatrzymać i wrócić do głównego menu, i znikać z niego samego, połączenie zostało zaakceptowane.

Próbowałem używać tkMessageBox, ale skrypt zatrzymuje się, dopóki użytkownik nie usunie wiadomości, więc nie ma sposobu, aby mnie wysłuchać/zaakceptować, dopóki użytkownik nie naciśnie czegoś.

W jaki inny sposób mogę to osiągnąć?

Dzięki!

+0

Być może w międzyczasie dodasz ramkę i zniszcz ją, gdy ją zaakceptujesz? – Zizouz212

+0

Zdecydował się otworzyć okno z etykietą i przyciskiem i zniszczyć to. Wydawało się, że działa, ale problem polega na tym, że podczas gdy nasłuchuje połączeń, całe okno się zawiesza i nie można kliknąć przycisku anulowania ... hmm. Nadal nad tym pracuję. – Bapho

Odpowiedz

1

Brzmi jak problem z gwintowaniem.

Nie znam grafiki TK, ale wyobrażam sobie, co trzeba zrobić, to uruchomić okno z komunikatem "oczekiwanie na odtwarzacz". To okno następnie pętle czeka na coś się stało.

Gdy pojawi się okno komunikatu, musisz wykonać "odsłuchiwanie" na innym wątku, który powróci do głównego okna komunikatu, gdy ktoś jest podłączony za pomocą semafora lub kolejki.

Na głównym wątku GUI trzeba wykonać pętlę:

  1. sprawdź kolejkę lub semafor na wartości. Jeśli jest tam wartość, której oczekujesz, zamknij pudełko. Musiałoby to być nieblokujące, aby wątek GUI nadal mógł sprawdzać dane wejściowe od użytkownika.
  2. sprawdź, czy użytkownik wprowadził dane. Prawdopodobnie jest to wykonywane za pomocą funkcji zwrotnych.
+0

Obawiałem się, że to będzie odpowiedź ... Czas zajrzeć do nitek. Dzięki! – Bapho

+0

@Bapho nie wpadaj w panikę, nie są * wszystkie * takie złe! Musisz tylko sprawdzić czas i sygnalizację, a wszystko będzie dobrze. –