Emirhan Erdem
80+
- Katılım
- 23 Mart 2020
- Mesajlar
- 337
Dahası
- Reaksiyon skoru
- 112
- İsim
- Emirhan Erdem
arkadaşlar merhaba ses alışverişi yapabileceğimiz bir program yapıyorum arayüzüde tkinter kullandım şimdilik.
Bağlantıyı kes butonuna tıkladığımda programın tamamen kapanması lazım ancak kapanmıyor.
Kodun bir kısmı bu şekilde, ancak butona tıkladığımda program tamamen kapanmak yerine işaretli yer kalıyor (ne denir tam bilemedim) yardım eder misiniz kafam çok dağıldı.
Bağlantıyı kes butonuna tıkladığımda programın tamamen kapanması lazım ancak kapanmıyor.
Python:
self.disconnect_button = tk.Button(
self.root, text="Bağlantıyı kes",cursor="hand2", command=self.disconnect)
self.disconnect_button.pack()
def disconnect(self):
self.client_socket = None
self.root.destroy()
self.pencere.destroy()
self.pencere.quit()
self.root.quit()
sys.exit()
def get_sound_fonc(self):
p = pyaudio.PyAudio()
stream = p.open(
format=pyaudio.paInt16,
channels=self.CHANNELS,
rate=self.RATE,
output=True
)
if self.connect:
while self.is_running_recv:
try:
data = self.client_socket.recv(self.CHUNK)
if not data:
break
if self.event.is_set() and self.output_stream is not None: # Hoparlör bağlantısı kontrolü eklendi
self.play_server_output(data)
""" if self.event.is_set() and self.output_stream is not None: # Hoparlör bağlantısı kontrolü eklendi
self.play_server_output(data)
except Exception as e:
print("Beklenmeyen bir hata oluştu:", e)
print("Ses aktarımı durduruldu.")
return"""
except Exception as e:
if self.client_socket is not None:
print("Beklenmeyen bir hata oluştu:", e)
print("Yeni bir bağlantı bekleniyor...")
self.client_socket.close()
self.client_socket, address = self.server_socket.accept()
print(f"* {address} adresinden yeni bir bağlantı alındı.")
data = self.client_socket.recv(self.CHUNK)
if not data:
break
if self.event.is_set() and self.output_stream is not None: # Hoparlör bağlantısı kontrolü eklendi
self.play_server_output(data)
else:
print("hoparlör bağlantısı koptu.")
return
if self.connect==False:
print("İnternet bağlantısı kopmuş. Bağlantının tekrar sağlanması bekleniyor...")
while self.connect() == False:
pass
print("İnternet bağlantısı tekrar sağlandı. Ses aktarımı devam ediyor.")
self.client_socket.close()
self.client_socket, address = self.server_socket.accept()
print(f"* {address} adresinden yeni bir bağlantı alındı.")
data = self.client_socket.recv(self.CHUNK)
if self.event.is_set():
self.play_server_output(data)
stream.stop_stream()
stream.close()
self.client_socket.close()
p.terminate()
Kodun bir kısmı bu şekilde, ancak butona tıkladığımda program tamamen kapanmak yerine işaretli yer kalıyor (ne denir tam bilemedim) yardım eder misiniz kafam çok dağıldı.