Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将小部件推到左上角而不是右下角_Python_Pyqt_Boxlayout_Qvboxlayout - Fatal编程技术网

Python 如何将小部件推到左上角而不是右下角

Python 如何将小部件推到左上角而不是右下角,python,pyqt,boxlayout,qvboxlayout,Python,Pyqt,Boxlayout,Qvboxlayout,刚开始使用pyqt5,想知道如何将小部件推到QVBoxLayout的顶部,然后再推到QHBoxLayout。当前使用addStretch()将小部件推到底部/右侧。我希望避免使用绝对定位 self.tabColor.layout = QVBoxLayout(self) self.tabColor.layout.addStretch() ## FOR CONTROL lbl_control = QLabel(self) lbl_control.setText("control") le_

刚开始使用pyqt5,想知道如何将小部件推到QVBoxLayout的顶部,然后再推到QHBoxLayout。当前使用addStretch()将小部件推到底部/右侧。我希望避免使用绝对定位

self.tabColor.layout = QVBoxLayout(self)
self.tabColor.layout.addStretch()    

## FOR CONTROL
lbl_control = QLabel(self)
lbl_control.setText("control")
le_control = QLineEdit(self)

hbox_control = QHBoxLayout()
hbox_control.addStretch(1)
hbox_control.addWidget(lbl_control)
hbox_control.addWidget(le_control)

## FOR UNKNOWN
lbl_unknown = QLabel(self)
lbl_unknown.setText("unknown")
le_unknown = QLineEdit(self)

hbox_unknown = QHBoxLayout()
hbox_unknown.addStretch(1)
hbox_unknown.addWidget(lbl_unknown)
hbox_unknown.addWidget(le_unknown)


self.tabColor.layout.addLayout(hbox_control)
self.tabColor.layout.addLayout(hbox_unknown)
self.tabColor.setLayout(self.tabColor.layout)

我使用了self.tabColor.layout.setDirection(3)。它将水平布局放在顶部,但似乎颠倒了顺序。基本上,“未知”将首先是“控制”。这没什么大不了的,但我想知道是否还有其他选项可以尝试

更改addWidget/Stretch调用的顺序(即在小部件之后添加Stretch

我建议您的第一种方法也是设置布局的方向,因为您正在尝试另一种方法:

  • 尝试总是在开始时添加,而不是尝试插入小部件
  • 而不是:

    self.layout.addWidget(self.lbl_1)
    self.layout.addWidget(self.lbl_2)
    self.layout.addWidget(self.lbl_3)
    
    尝试:

    它将以相反的方向添加,已经在布局中的小部件将根据布局QHBoxLayout或QVBoxLayout进行移动

    self.layout.insertWidget(0,self.lbl_1)
    self.layout.insertWidget(0,self.lbl_2)
    self.layout.insertWidget(0,self.lbl_3)