python的tkinter的GUI设计中加入plt.show之后整个窗口的大小发生了改变,如何解决?、
时间: 2023-06-04 14:06:19 浏览: 50
这个问题可以通过设置figure的大小来解决。在plt.show()之前加入以下代码即可:
fig = plt.gcf() # 获取当前图表的引用
fig.set_size_inches(6, 4) # 设置figure的大小,单位为英寸
其中,6和4分别代表figure的宽度和高度,可以根据需要进行调整。
相关问题
如何让python的plt.show的图片显示在GUI界面上
要在GUI界面上显示matplotlib绘制的图形,可以使用Tkinter或其他GUI框架来创建一个窗口,并将matplotlib绘制的图形嵌入到该窗口中。以下是一个简单的示例代码:
```
import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
# 创建一个窗口
root = tk.Tk()
# 创建一个matplotlib图形
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6])
# 将matplotlib图形嵌入到Tkinter窗口中
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()
canvas.get_tk_widget().pack()
# 启动Tkinter事件循环
tk.mainloop()
```
在这个示例中,我们首先创建了一个Tkinter窗口`root`,然后使用matplotlib创建一个图形`fig`,并将其嵌入到Tkinter窗口中。最后,我们启动Tkinter的事件循环,等待用户交互。可以将这段代码放在一个函数中,然后从其他地方调用该函数来显示matplotlib图形。
def channel_hist(image): color = ('b', 'g', 'r') for i, color in enumerate(color): hist = cv2.calcHist([image], [i], None, [256], [0, 256]) plt.plot(hist, color) plt.xlim([0, 256]) #plt.show() return plt怎样用 Matplotlib 提供的 FigureCanvasTkAgg 类将整个绘图对象嵌入到 Tkinter GUI 中。
你可以按照以下步骤将 Matplotlib 绘图对象嵌入到 Tkinter GUI 中:
1. 导入 Matplotlib 和 Tkinter 库:
```python
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import tkinter as tk
```
2. 创建 Matplotlib 绘图对象:
```python
def channel_hist(image):
color = ('b', 'g', 'r')
for i, color in enumerate(color):
hist = cv2.calcHist([image], [i], None, [256], [0, 256])
plt.plot(hist, color)
plt.xlim([0, 256])
return plt
```
3. 创建 Tkinter 窗口和画布:
```python
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=300)
canvas.pack()
```
4. 将 Matplotlib 绘图对象嵌入到 Tkinter 画布中:
```python
fig = channel_hist(image).gcf()
canvas_widget = FigureCanvasTkAgg(fig, canvas)
canvas_widget.draw()
canvas_widget.get_tk_widget().pack()
```
5. 运行 Tkinter 主循环:
```python
root.mainloop()
```
完整代码示例:
```python
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import tkinter as tk
def channel_hist(image):
color = ('b', 'g', 'r')
for i, color in enumerate(color):
hist = cv2.calcHist([image], [i], None, [256], [0, 256])
plt.plot(hist, color)
plt.xlim([0, 256])
return plt
# 创建 Tkinter 窗口和画布
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=300)
canvas.pack()
# 将 Matplotlib 绘图对象嵌入到 Tkinter 画布中
fig = channel_hist(image).gcf()
canvas_widget = FigureCanvasTkAgg(fig, canvas)
canvas_widget.draw()
canvas_widget.get_tk_widget().pack()
# 运行 Tkinter 主循环
root.mainloop()
```
这样就可以将 Matplotlib 绘图对象嵌入到 Tkinter GUI 中了。