2014-12-08 2 views
1

Я пытаюсь создать форму приложения PySide, и я следую некоторому учебнику, но у меня есть проблема, которая представляет собой пробел между QLabel и QCombobox.Удалить пространство между Combobox и label (QGridlayout)

Это мой код

import sys 
from PySide import QtCore, QtGui 
from PySide.QtGui import * 
from PySide.QtCore import * 

class Window(QtGui.QWidget): 
    def __init__(self, parent=None): 
     super(Window, self).__init__(parent) 

     self.setMinimumHeight(660) 
     self.setMinimumWidth(700) 
     self.setMaximumHeight(660) 
     self.setMaximumWidth(900) 

     grid = QtGui.QGridLayout() 
     grid.addWidget(self.First(), 0,0,2,0) 

     self.setLayout(grid) 

     self.setWindowTitle("Library") 
     self.resize(700, 660) 

    def First(self): 
     groupBox = QtGui.QFrame() 
     groupBox.setMaximumWidth(230) 
     groupBox.setMaximumHeight(700) 

     lbFile = QtGui.QLabel("File :",self) 
     lbFolders = QtGui.QLabel("Folders :",self) 

     cbFile = QtGui.QComboBox(self) 
     cbFile.addItem("File 1") 
     cbFile.addItem("File 2") 

     lvFolders = QtGui.QListView(self) 
     lvFolders.setMaximumWidth(220) 
     lvFolders.setMaximumHeight(500) 

     vbox = QtGui.QGridLayout() 
     vbox.addWidget(lbFile,0,0) 
     vbox.addWidget(cbFile,0,1) 
     vbox.addWidget(lbFolders,2,0) 
     vbox.addWidget(lvFolders,3,0,1,2) 
     groupBox.setLayout(vbox) 
     return groupBox 


app = QApplication.instance() 
if app is None: 
    app = QApplication(sys.argv) 
    clock = Window() 
    clock.show() 
app.exec_() 

и это моя форма:

enter image description here

Я не знаю, как удалить пространство между QLabel "Файл" и QComboBox "Файл 1"

+1

Они находятся в двух отдельных столбцах (натянутых на 'lvFolders'), имеющих равную ширину. Если вы хотите уменьшить пространство, которое вы могли бы, например, right-align 'File:'. – jonrsharpe

+1

Или поместите их оба в QHBoxLayout и добавьте этот макет в ячейку, в которой находится QLabel. –

+0

На самом деле вы, похоже, не создали жесткую сетку, поэтому вам, вероятно, потребуется более легкое время, если вы использовали вложенные QHBoxLayouts, возможно, внутри QVBoxLayout вместо QGridLayout. – hyde

ответ

0

Отрегулируйте коэффициент растяжения для второго столбца макета и, возможно, также сделайте метку folders по обоим столбцам:

vbox = QtGui.QGridLayout() 
    vbox.addWidget(lbFile,0,0) 
    vbox.addWidget(cbFile,0,1) 
    vbox.addWidget(lbFolders,2,0,1,2) 
    vbox.addWidget(lvFolders,3,0,1,2) 
    vbox.setColumnStretch(1, 1) 
+0

Спасибо вам большое! –

Смежные вопросы