Python-只需点击一下鼠标,即可从“ While True”循环中退出程序

时间:2018-12-05 06:23:31

标签: python tkinter while-loop mouseevent

Original File

为什么在WHILE TRUE循环期间在框架上单击鼠标时为什么不能关闭程序?

程序侦听UDP或Sense HAT的输入并将其显示在窗口上。很简单:)

我想要的是通过 mouseclick

退出程序

最终程序将在启动时运行,如果出现错误,它将重新启动。

现在我将解释我的程序,您可以从上面的链接中获得完整的代码。它开始,但是等待UDP数据。如果您愿意,我可以上传bat文件供服务器PC发送。 (注意:nmea仅提供信息而不是我从船上获得的信息)

最后,如果您想评论程序的结构(或其他内容),请这样做,我已有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()

这部分从UDP获取nmea数据并根据帧设置值

EOF是

root.mainloop()

0 个答案:

没有答案