问题:
在编写软件时,有左右两个子界面,都设置为网格布局;左界面是菜单,右界面是每个菜单对应的内容。当右界面的空间太多时,导致左界面的空间缩小,不协调。
正常显示应如下
如下图:右边的一行控件太多,导致子界面左边界面宽度变窄,影响整体协调性。
解决办法:
方法1
为了不让左边变窄,与其他子界面相协调,调整了一下整个界面的大小,使得左边的菜单在每个子界面显示时都不变,显示如下,效果就是整个变宽了。
# 初始化界面
def init_ui(self):
#self.setFixedSize(960, 700)
# 将整个界面的宽度设大
self.setFixedSize(1160, 700)
self.main_widget = QtWidgets.QWidget() # 创建窗口主部件
self.main_layout = QtWidgets.QGridLayout() # 创建主部件的网格布局
self.main_widget.setLayout(self.main_layout) # 设置窗口主部件布局为网格布局
显然这种效果不满意
方法2
固定右侧的界面大小,使得左侧在任何情况下都不动,右侧控件根据大小进行设定。
其实就加了设定宽度的代码
self.right_widget.setFixedWidth(750)
def class_calculation_resistance(self):
if self.right_widget:
self.main_layout.removeWidget(self.right_widget) # 移除已有右侧组件
self.setWindowTitle('系统')
self.right_widget = QtWidgets.QWidget() # 创建右侧部件
self.right_widget.setObjectName('right_widget')
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.right_layout = self.verticalLayout
self.right_widget.setLayout(self.right_layout) # 设置右侧部件布局为网格
self.main_layout.addWidget(self.right_widget, 0, 2, 12, 10) #占8行9列 12 10
self.right_widget.setFixedWidth(750)
print(self.right_widget.size())
效果可以
右侧控件自己自适应改变,但不影响整体效果。
一起学习一起成长