tkinter - 单个 onclick 生成多个 tkinter 窗口
问题描述
当我单击画布中的一个点(在 plot[0]==2, 模式中)而不是一个点时,会打开多个(大约 10 个)tkinter 窗口,询问经度和纬度
def on_press(self, event):
initial_x=round(event.xdata,2)
initial_y=round(event.ydata,2)
if(plot[0]=='2'):
master = tk.Tk()
tk.Label(master, text="Source ").grid(row=0)
tk.Label(master, text="Destination ").grid(row=1)
e = tk.Entry(master)
f = tk.Entry(master)
e.grid(row=0, column=1)
f.grid(row=1, column=1)
def show_entry_fields():
src = e.get()
dest = f.get()
global flag
flag = 0
for i in range(0, nRoute):
if((c1[i]==src and c2[i]==dest) or (c1[i]==dest and c2[i]==src)):
c9[i]='0';
flag = 1
if(flag==0):
# print("no two such locations found")
initialPaths = extraPaths
for i in range(0, initialPaths):
if((kneeSrc[i]==src and kneeDest[i]==dest) or (kneeSrc[i]==dest and kneeDest[i]==src)):
pass
master.destroy()
tk.Button(master, text='Quit', command=master.destroy).grid(row=3, column=0, sticky=tk.W)
tk.Button(master, text='Okay', command=show_entry_fields).grid(row=3, column=1, sticky=tk.W, pady=4)
self.after(100,master.mainloop())
window.destroy()
if(plot[0]=='1'):
for i in range(0,nBus):
if((round(busDict[col2[i]][2],2)==initial_x) and (round(busDict[col2[i]][3],2)==initial_y)):
busDict[col2[i]][2]=0.0
busDict[col2[i]][3]=0.0
if event.inaxes != self.point.axes: return
if DraggablePoint.lock is not None: return
contains, attrd = self.point.contains(event)
if not contains: return
self.press = (self.point.center), event.xdata, event.ydata
DraggablePoint.lock = self
# draw everything but the selected rectangle and store the pixel buffer
canvas = self.point.figure.canvas
axes = self.point.axes
self.point.set_animated(True)
canvas.draw()
如何更改代码以便单击时仅生成一个 tkinter 窗口
解决方案
有一个简单的解决方法。启动新变量,然后在创建新窗口的部分周围self.onpress_open = False
添加self.onpress_open = True
并放置带有条件的 if 语句。self.onpress_open == False
然后不要忘记将self.onpress_open = False
关闭该窗口的所有位置。
那只是化妆品修复。它并没有解决无意中多次运行您的功能的问题。
推荐阅读
- visual-studio-code - VS Code - 获取和使用当前图标集
- reactjs - 如何从 onClick 传递引用以打开模式
- python - Sonnet 中的 LSTM 时间步长
- sql - 使用 PATINDEX 在 SQL Server 中使用多种格式查找文本中的时间
- ios - 使用相同的静态库在工作区中重复符号
- c - Windows spooler API GetPrinter() 没有返回正确填充的结构 PRINTER_INFO_6
- reactjs - 文件处理/上传时如何将值从反应传递到表达
- vue.js - 如何强制 axios GET 请求发送标头?
- python - 如何制作蒙版以将除文本之外的所有图像背景设置为白色?
- ios - 原生 Swift 应用程序中的视频播放和加速度计都需要 WKWebView 的哪些权限?