Python 如何修复Qtab并在选项卡区域中创建更多按钮和文本行

Python 如何修复Qtab并在选项卡区域中创建更多按钮和文本行,python,python-3.x,pyqt4,Python,Python 3.x,Pyqt4,为什么我的地址QLabel在tab1 如何修复选项卡1中的QLabel 为什么按钮是固定宽度 我想在墙上创建不同的标签,有不同的按钮、表格或文字行 代码: import os, sys, subprocess from PyQt4 import QtGui, QtCore class MainWindow(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.setGeometr

为什么我的地址
QLabel
tab1

如何修复
选项卡1中的
QLabel

为什么
按钮
是固定宽度

我想在墙上创建不同的标签,有不同的按钮、表格或文字行

代码:

import os, sys, subprocess
from PyQt4 import QtGui, QtCore 

class MainWindow(QtGui.QWidget): 
def __init__(self): 
    QtGui.QWidget.__init__(self) 

    self.setGeometry(0,0, 900,600) 
    self.setWindowTitle("GUI") 

    tab_widget = QtGui.QTabWidget() 
    tab1 = QtGui.QWidget() 
    tab2 = QtGui.QWidget() 
    tab3 = QtGui.QWidget()

    p1_vertical = QtGui.QVBoxLayout(tab1) 
    p2_vertical = QtGui.QVBoxLayout(tab2) 
    p3_vertical = QtGui.QVBoxLayout(tab3)

    tab_widget.addTab(tab1, "tab1") 
    tab_widget.addTab(tab2, "tab2") 
    tab_widget.addTab(tab3, "tab3")

    button1 = QtGui.QPushButton("button1") 
    p1_vertical.addWidget(button1)
    button2 = QtGui.QPushButton("button2")
    p1_vertical.addWidget(button2)
    button3 = QtGui.QPushButton("button3")
    p1_vertical.addWidget(button3)
    button4 = QtGui.QPushButton("button4")
    p1_vertical.addWidget(button4)
    button3.move(50,100)
    button3.resize(50,50)

    vbox = QtGui.QVBoxLayout() 
    #vbox.addWidget(menu_bar) 
    vbox.addWidget(tab_widget) 

    self.setLayout(vbox)

    label1 = QtGui.QLabel("Address", self)
    label1.move(20,70)
    edit = QtGui.QLineEdit(self)
    edit.setDragEnabled(True)
    edit.move(20,95)
    edit.resize(150,30)

我想您应该研究一下
QtGui.QGridLayout
()。这使您可以轻松地在网格上对齐小部件和布局,还可以指定每列的大小

在您的情况下,这将类似于:

# Create Layout
self.grid = QtGui.QGridLayout()

# Add widgets    
self.grid.addWidget(label1,1,1)
self.grid.addWidget(edit,2,1)
如果希望列具有一定的宽度,可以使用

self.grid.setColumnMinimumWidth(rowIndex,width)
self.grid.setColumnStretch(rowIndex,stretchFactor)
widget.setMaximumSize(width,height)
widget.setMinimumSize(width,height)
stretchFactor=1
将导致在发生
resizeEvent
的情况下不拉伸行

如果只想设置特定
QWidget
的大小,可以使用

self.grid.setColumnMinimumWidth(rowIndex,width)
self.grid.setColumnStretch(rowIndex,stretchFactor)
widget.setMaximumSize(width,height)
widget.setMinimumSize(width,height)

我希望这有帮助

你能解释清楚一点吗?你说的“修复”是什么意思?固定位置?固定大小?我希望qlineedit固定位置和按钮可以固定大小我还有其他问题。我希望你能问我。请!!