Исходный файл
Почему я не могу ЗАКРЫТЬ программу, КОГДА во время цикла WHILE TRUE щелкнуть мышью на КАДРЕ?
Программа прослушивает UDP или Sense HAT дляввод и показывает их в окне.это просто:)
Мне нужно выйти из программы с помощью щелчка мышью
Final Программа будет запущена при запуске и при возникновении ошибки перезапустится.
Теперь я объясню свою программу, вы можете получить полный код по ссылке выше.Он запускается, но ожидает данных UDP.Если вы хотите, я могу загрузить файл bat для сервера ПК для отправки. (примечание: только некоторые предложения для информации, а не те, которые я получаю с лодки)
И наконец, если вы хотите прокомментировать структуру (или другое) программы, пожалуйста, СДЕЛАЙТЕ, у меня нетЯ написал рутину в течение 30 лет.И это моя первая подпрограмма Python.
Первая часть программы, (это короткая версия)
Импорт, открытие портов UDP и определение команды «Закрыть»
import time
try:
import Tkinter as tk
from Tkinter import *
except ImportError:
import tkinter as tk
from tkinter import *
import socket
UDP_IP_ADDRESS = ""
UDP_PORT_NO = 10110
serverSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
serverSock.bind((UDP_IP_ADDRESS, UDP_PORT_NO))
def rightClick(event): sys.exit()
Дизайн главного окна
## Main Window
root = Tk()
root.title("Screen GUI")
root.overrideredirect(True)
root.geometry('800x1280-0-0')
## fonts ##
Font208 = ('digiGA2', 156)
awind_frame = Frame(root, bg='cyan', width=800, height=732, pady=0, padx=0)
awind_frame.grid(row=0, sticky="ew")
## create the WIDGETS for the awind_frame
ctr_mid = Frame(awind_frame, bg='black', width=600, height=732)
ctr_mid.grid(row=0, column=1, sticky="nsew")
## create the WIDGETS for the awind_frame ctr_mid
sog_cer = Frame(ctr_mid, width=600, height=244)
sog_cer.pack_propagate(0)
sog_cer.pack(side = TOP)
sog_label = Label(sog_cer, anchor="e", text='9.9', font=Font208,padx="85", pady="17", bg='black', fg='#ffffff')
Здесь я хочу ощутить "щелчок правой кнопкой мыши"
sog_label.bind('<Button-3>', rightClick)
и остальную часть окна
sog_label.pack(fill=BOTH, expand=1)
root.update()
После этих установок во время запуска циклов
while True:
nmea_data, addr = serverSock.recvfrom(1024)
nmea_header = nmea_data [3:6]
nmea_data = str(nmea_data)
def rightClick(event): sys.exit()
эта часть получает данные nmea из UDP и устанавливает значения в соответствии с кадрами
, а EOF равно
root.mainloop()