PYQT5界面,通过self.showFullScreen() (下面代码块中第15行)全屏显示,为什么界面的关闭按钮会消失!
问题如图:
代码如下:
import pandas as pd
import matplotlib
matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt
from PyQt5 import QtWidgets
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
# 1配置QT界面
class ScrollableWindow(QtWidgets.QMainWindow):
def __init__(self, fig):
self.qapp = QtWidgets.QApplication([]) #QApplication类用于管理GUI应用程序的控制流和主要设置
QtWidgets.QMainWindow.__init__(self) #创建窗口
self.showFullScreen() # 全屏(*******问题:执行此句后实现全屏,但关闭按钮消失***********)
self.widget = QtWidgets.QWidget() #QtWidgets类提供用于UI的图形元素
self.setCentralWidget(self.widget) #将把widget设置为主窗口的中心窗口部件
self.widget.setLayout(QtWidgets.QVBoxLayout()) #setLayout设置用户界面上的屏幕组件的格式布局
self.widget.layout().setContentsMargins(0, 0, 0, 0) #设置左、上、右、下的外边距
self.widget.layout().setSpacing(0) #设置各部件的相邻距离
self.fig = fig #fig 大画板
self.canvas = FigureCanvas(self.fig) #FigureCanvas画布
self.canvas.draw() #绘制
self.scroll = QtWidgets.QScrollArea(self.widget) #有滚动条的窗口
self.scroll.setWidget(self.canvas) #创建滚动条
self.nav = NavigationToolbar(self.canvas, self.widget) #导航工具栏配置
self.widget.layout().addWidget(self.nav) #导航工具栏添加至窗口部件中
self.widget.layout().addWidget(self.scroll) #有滚动条的窗口添加至窗口部件中
self.setWindowTitle('Test')
self.show()
exit(self.qapp.exec_())
# 2准备数据
data=\
[[816,420,20,-2.2],
[817,440,19,-2.1],
[818,430,22,-2.6],
[819,470,27,-2.0],
[819,510,24,-1.9],
[820,410,30,-2.9]]
df=pd.DataFrame(data=data,columns=['深度','参数1','参数2','参数3'])
print(df)
# 3绘图
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(20, 8)) #将父页面分割成3*1子界面,fig-大画板,axes-相当于图表
fig.suptitle('总标题', fontsize=14, fontweight='bold')
axes.flatten()[0].set_title('子图1', fontsize=12)
axes.flatten()[1].set_title('子图2', fontsize=12)
axes.flatten()[2].set_title('子图3', fontsize=12)
fig.subplots_adjust(left=0.05, right=0.95, bottom=0.1, top=0.9, wspace=0.2, hspace=0.4)
# 3.1绘制参数1曲线
x = df['深度'].tolist()
y = df['参数1'].tolist()
axes.flatten()[0].plot(x, y, label='参数1', linewidth=1)
axes.flatten()[0].set_ylim(400, 800)
# 3.1绘制参数2曲线
x = df['深度'].tolist()
y = df['参数2'].tolist()
axes.flatten()[1].plot(x, y, label='参数2', linewidth=1)
# 3.1绘制参数3曲线
x = df['深度'].tolist()
y = df['参数3'].tolist()
axes.flatten()[2].plot(x, y, label='参数3', linewidth=1)
ScrollableWindow(fig)