在 window 调整大小时调整 Tkinter 小部件和 canvas 的大小?
Resize Tkinter widget and canvas when window resize?
我知道这听起来可能与一些已经提出的问题类似,但我遇到的问题是我使用 .place(x=?,y=?) 而不是使用 tkinter 网格放置所有小部件像大多数问题一样,这就是为什么我想知道是否有人有想法让它工作而无需使用网格重写所有内容,这是我的代码中的一个示例:
#canvas
self.fig.clear()
self.fig=plt.figure()
plt.gcf().subplots_adjust(left=0.16)
plt.xlabel(xlabel)
plt.ylabel(ylabel)
self.CS = plt.contour(X, Y, Z)
plt.plot(pointX, pointY, 'kx')
plt.clabel(self.CS, inline=1, fontsize=10)
self.canvas = FigureCanvasTkAgg(self.fig, self)
self.canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
self.canvas.tkcanvas.place(x=0,y=350,hight=400,width=400)
self.canvas.show()
#Label
label1 = tk.Label(self, text="Horizontal", font=LARGE_FONT)
label1.place(x = 20, y = 50,height=20)
label2 = tk.Label(self, text="Vertikal", font=LARGE_FONT)
label2.place(x = 120, y = 50,height=20)
谢谢
好吧,其中一种选择是使用相对定位和大小。例如:
label1.place(relx=0.1, rely=0.25, relheight=0.1, relwidth=0.2)
这样,当您调整 window 大小时,它应该相应地更改小部件大小。但是,正如@Ethan Field所说,使用这种方法将所有小部件放在表单上会非常痛苦。
您可以找到更多信息 here。
我知道这听起来可能与一些已经提出的问题类似,但我遇到的问题是我使用 .place(x=?,y=?) 而不是使用 tkinter 网格放置所有小部件像大多数问题一样,这就是为什么我想知道是否有人有想法让它工作而无需使用网格重写所有内容,这是我的代码中的一个示例:
#canvas
self.fig.clear()
self.fig=plt.figure()
plt.gcf().subplots_adjust(left=0.16)
plt.xlabel(xlabel)
plt.ylabel(ylabel)
self.CS = plt.contour(X, Y, Z)
plt.plot(pointX, pointY, 'kx')
plt.clabel(self.CS, inline=1, fontsize=10)
self.canvas = FigureCanvasTkAgg(self.fig, self)
self.canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
self.canvas.tkcanvas.place(x=0,y=350,hight=400,width=400)
self.canvas.show()
#Label
label1 = tk.Label(self, text="Horizontal", font=LARGE_FONT)
label1.place(x = 20, y = 50,height=20)
label2 = tk.Label(self, text="Vertikal", font=LARGE_FONT)
label2.place(x = 120, y = 50,height=20)
谢谢
好吧,其中一种选择是使用相对定位和大小。例如:
label1.place(relx=0.1, rely=0.25, relheight=0.1, relwidth=0.2)
这样,当您调整 window 大小时,它应该相应地更改小部件大小。但是,正如@Ethan Field所说,使用这种方法将所有小部件放在表单上会非常痛苦。
您可以找到更多信息 here。