Ich habe im Internet nach einer Lösung gesucht, konnte aber keine finden. Ich versuche, den weißen Bereich um die Handlung auf einer Leinwand zu entfernen, wie im Bild gezeigt, aber ich hatte bisher keinen Erfolg.Wie kann man Leerraum aus dem Tkinter-Canvas eines Pythons entfernen?
Der einfache Code, den ich geschrieben habe, ist:
import tkinter as tk
import matplotlib
from matplotlib import style
style.use('seaborn-darkgrid')
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import random
class GUIplot(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
printButton = tk.Button(self, text="Plot1", command=lambda: self.printMessage(canvas,a))
printButton.grid(row=0, column=0, sticky='w')
f = Figure(figsize=(24,12))
a = f.add_subplot(111, axisbg='r')
canvas = FigureCanvasTkAgg(f, self)
canvas.get_tk_widget().grid(row=1, columnspan=2)
#canvas._tkcanvas.config(bg='blue')
canvas.show()
canvas.blit()
def printMessage(self,canvas,a):
a.clear()
my_random_x = random.sample(range(100),10)
my_random_y = random.sample(range(100),10)
a.plot(my_random_x,my_random_y,'*')
canvas.draw()
print("Wow")
GUIplot1 = GUIplot()
GUIplot1.title('PlotFunction')
w, h = GUIplot1.winfo_screenwidth(), GUIplot1.winfo_screenheight()
GUIplot1.geometry("%dx%d+0+0" % (w, h))
GUIplot1.mainloop()
Ich würde verlangen, wenn eine der Mitglied in der Gemeinschaft eine Idee hat, wie dieses Problem zu lösen mir zu zuliebe bieten mit etwas Anleitung.
Sie Sizing das Fenster den gesamten Bildschirm aufzunehmen und die Leinwand ist nicht groß genug, um in der Größe des Fensters füllen Sie angegeben haben. Daher ist der zusätzliche Platz mit dem von Ihnen erwähnten "Leerraum" ausgefüllt. – RobertR
@RobertR, danke für die Eingabe. Kannst du mir bitte vorschlagen, wie ich die Größe der Leinwand erhöhen kann, wenn ich 'canvas = FigureCanvasTkAgg (f, self)' 'verwende? –
Wenn Sie es mit dem Aufruf von '.grid (row = 1, columspan = 2) auf den Bildschirm übertragen, versuchen Sie,' sticky = "nswe" 'zum Aufruf hinzuzufügen. Es sollte also aussehen wie '.grid (row = 1, columspan = 2, sticky =" nswe ")'. Ich bin mir nicht ganz sicher, ob das funktionieren wird. Eine bessere Lösung ist, einfach die Größe Ihres Fensters nicht zu vergrößern und es automatisch für Sie zu skalieren. Auf diese Weise passt es die Größe der enthaltenen Widgets (die Leinwand) ohne Leerzeichen. Es sei denn, Sie möchten, dass der Bildschirm in voller Größe angezeigt wird. – RobertR