Ich habe eine GUI, die eine Bildfigur basierend auf einem Tastenklick in einer Schleife zeichnet. Ich füge dieser Figur eine Symbolleiste hinzu, damit Sie hinein- und herauszoomen können, aber trotz der Zerstörung aller untergeordneten Elemente im zugewiesenen Rahmen bei jeder Schleife scheint der Symbolleiste mit jeder Schleife (d. h. dem Figurenrahmen) immer mehr Platz zugewiesen zu werden wird immer breiter). Hier sind die relevanten Funktionen. Ich habe alles versucht und es weigert sich einfach zu kooperieren. Jede Hilfe wäre sehr dankbar. Das Problem liegt wahrscheinlich in der Funktion „pick_single“ unten. Darin habe ich einen Block, um alle untergeordneten Elemente zu zerstören, aber anscheinend werden irgendwo Reste der Symbolleiste aufbewahrt.
#function to remove several of the toolbar buttons and only keep zoom and home
class Toolbar(NavigationToolbar2Tk):
NavigationToolbar2Tk.toolitems = [t for t in NavigationToolbar2Tk.toolitems if
t[0] not in ('Back','Forward','Pan','Subplots','Save',None)]
def set_message(self, s):
pass
def create_plot(image_cur):
global counter, txt_files
# f = Figure(figsize=(2,1.5),dpi=250,frameon=False)
f = Figure(figsize=(plotwidth, plotheight),dpi=dpi,frameon=False,tight_layout = True)
f.clear()
ax = f.add_subplot(111)
p1=ax.imshow(image_cur)
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
ax.set_title(str(counter+1)+' of '+str(len(txt_files)),fontsize=5)
return f
# function that picks the center of a scale through a mouse click
def pickc(event):
global st_cent, counter, store_centers,pxmm,trigg,cnt_r
x=event.xdata
y=event.ydata
store_centers[counter,:] = [x,y]
if trigg == -1:
cnt_r += 1
ratio_coords[cnt_r,:] = [x,y]
if cnt_r == 1:
trigg = 0
pxmm = np.sqrt((ratio_coords[0,0]-ratio_coords[1,0])**2+(ratio_coords[0,1]-ratio_coords[1,1])**2)
print(pxmm)
def pick_single():
global st_cent, counter, store_centers, txt_files, plotwidth, plotheight,dpi
#destroy all widgets associated with the frame
for widget in frame1.winfo_children():
widget.destroy()
counter += 1
if counter > len(txt_files):
counter = len(txt_files)
scale = imageio.imread(txt_files[counter])
# problems are likely somewhere in the remains of the function
frame1.update()
dpi = root.winfo_fpixels('1i')
plotwidth = frame1.winfo_width() / dpi
plotheight = frame1.winfo_height() / dpi
# create plot
fig1 = create_plot(image_cur=scale)
canvas = FigureCanvasTkAgg(fig1, master=frame1)
mplcursors.cursor(fig1)
canvas.draw()
canvas.get_tk_widget().pack(side=tk.RIGHT, fill=tk.X, expand=1)
toolbar = Toolbar(canvas, frame1, pack_toolbar=False)
toolbar.pack(side=tk.BOTTOM,fill=X)
toolbar.update()
fig1.canvas.callbacks.connect('button_press_event', pickc)
Ich habe versucht, Widgets im Rahmen zu zerstören, die Leinwand zu löschen usw. Nichts scheint zu funktionieren.
Ich habe eine GUI, die eine Bildfigur basierend auf einem Tastenklick in einer Schleife zeichnet. Ich füge dieser Figur eine Symbolleiste hinzu, damit Sie hinein- und herauszoomen können, aber trotz der Zerstörung aller untergeordneten Elemente im zugewiesenen Rahmen bei jeder Schleife scheint der Symbolleiste mit jeder Schleife (d. h. dem Figurenrahmen) immer mehr Platz zugewiesen zu werden wird immer breiter). Hier sind die relevanten Funktionen. Ich habe alles versucht und es weigert sich einfach zu kooperieren. Jede Hilfe wäre sehr dankbar. Das Problem liegt wahrscheinlich in der Funktion „pick_single“ unten. Darin habe ich einen Block, um alle untergeordneten Elemente zu zerstören, aber anscheinend werden irgendwo Reste der Symbolleiste aufbewahrt. [code]#function to remove several of the toolbar buttons and only keep zoom and home class Toolbar(NavigationToolbar2Tk): NavigationToolbar2Tk.toolitems = [t for t in NavigationToolbar2Tk.toolitems if t[0] not in ('Back','Forward','Pan','Subplots','Save',None)]
def set_message(self, s): pass
def create_plot(image_cur): global counter, txt_files # f = Figure(figsize=(2,1.5),dpi=250,frameon=False) f = Figure(figsize=(plotwidth, plotheight),dpi=dpi,frameon=False,tight_layout = True) f.clear() ax = f.add_subplot(111) p1=ax.imshow(image_cur) ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) ax.set_title(str(counter+1)+' of '+str(len(txt_files)),fontsize=5) return f
# function that picks the center of a scale through a mouse click def pickc(event): global st_cent, counter, store_centers,pxmm,trigg,cnt_r x=event.xdata y=event.ydata store_centers[counter,:] = [x,y]
def pick_single(): global st_cent, counter, store_centers, txt_files, plotwidth, plotheight,dpi
#destroy all widgets associated with the frame for widget in frame1.winfo_children(): widget.destroy()
counter += 1 if counter > len(txt_files): counter = len(txt_files)
scale = imageio.imread(txt_files[counter])
# problems are likely somewhere in the remains of the function frame1.update() dpi = root.winfo_fpixels('1i') plotwidth = frame1.winfo_width() / dpi plotheight = frame1.winfo_height() / dpi
unten ist meine Problemanweisung:
Ich möchte die folgenden Dinge verwenden, die mit Schleife (oder für Schleife )
generieren.
c top skip
1 1000 0
2 1001 2000 --- added 999
3 2001 3000 --- added...
Ich weiß, wie man Anmerkungen entsprechend dem Plotbereich ausrichtet (mithilfe von xref= paper ). Ich möchte die Anmerkung in der rechten unteren Ecke der gesamten Abbildung platzieren. Ein...
Ich mache Plots in einer GUI mit Matplotlib. Meine ursprüngliche Figur ist groß, und ich möchte, dass ich eine kleinere Version der Figur als PDF (oder PNG) speichern kann. Ich kann dies tun, indem...
Ich schreibe diese Helferklasse, um die Ausgänge (sowohl Text- als auch Matplotlib -Abbildungen) einer Jupyter -Notebook -Zelle in eine HTML -Datei zu speichern.
class CaptureToHTML:
def...
Ich versuche, ein Tic-Tac-Toe-Spiel mit Tkinter zu machen, um die Bibliothek zu lernen. Ich habe ein 3x3 -Raster eingerichtet und mit Tasten gefüllt. Wenn Sie auf eine Schaltfläche klicken, ändert es...