gpt4 book ai didi

python - 当窗口大小减小时,所有小部件都会消失

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:41 25 4
gpt4 key购买 nike

当我减小窗口大小时,所有小部件都会消失。我希望小部件在大小减小时移动。我该如何解决这个问题?

我有一个下拉菜单,可以从中选择一个值。当按下“添加cmd”按钮时,该值将添加到编辑框。

提前致谢。

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class tabdemo(QTabWidget):
def __init__(self, parent = None):
super(tabdemo, self).__init__(parent)
self.setGeometry(50, 50, 400,400)

QShortcut(QKeySequence("Esc"), self, self.close)
self.tab1 = QWidget()
self.tab2 = QWidget()
self.addTab(self.tab1,"Tab 1")
self.tab1UI()
self.setWindowTitle("Main Window")

def tab1UI(self):
self.comboBox = QComboBox(self.tab1)
self.comboBox.addItem('ABC')
self.comboBox.addItem('BCD')
self.comboBox.addItem('CDE')
self.comboBox.move(5,20)
self.comboBox.resize(180,30)

self.button = QPushButton('Add Cmd', self.tab1)
self.button.move(190,20)
self.button.resize(80,30)
self.button.clicked.connect(self.handleTest)

self.b = QTextEdit(self.tab1)
self.b.move(20,75)
self.b.resize(290,200)

self.button = QPushButton('Send Batch', self.tab1)
self.button.move(40,300)
self.button.resize(150,30)

self.button = QPushButton('Clear', self.tab1)
self.button.move(200,300)
self.button.resize(80,30)
self.button.clicked.connect(self.deletevalue)

layout = QFormLayout()
self.setTabText(4,"BatchCMDS")
self.tab1.setLayout(layout)

def handleTest(self):
self.b.append(str(self.comboBox.currentText()))

def deletevalue(self):
self.b.clear()

def main():
app = QApplication(sys.argv)
ex = tabdemo()
ex.show()
sys.exit(app.exec_())

if __name__ == '__main__':
main()

最佳答案

如果您希望小部件适应窗口的大小,您应该使用 layouts为此,必须设计应用程序,为此使用您希望应用程序的图像:

enter image description here

正如我们所见,选项卡内的小部件分为 3 组,第一组由 QComboBox 组成。与 QPushButton ,第二个QTextEdit ,第三个是剩下的 2 个按钮。每个组都是水平分布的,因此在这种情况下我们应该使用 QHBoxLayout 除了 QTextEdit这是单独的,每个组应该在 QVBoxLayout 中。我不明白你为什么使用 QFormLayout ,如果您使用布局,则不需要位置。

我在代码中看到的另一个错误是多个按钮具有相同的名称,这会导致错误,例如 Add CMD按钮不起作用,您必须为每个小部件指定不同的名称。

class tabdemo(QTabWidget):
def __init__(self, parent = None):
super(tabdemo, self).__init__(parent)
self.setGeometry(50, 50, 400,400)

QShortcut(QKeySequence("Esc"), self, self.close)
self.tab1 = QWidget()
self.tab2 = QWidget()
self.addTab(self.tab1,"Tab 1")
self.addTab(self.tab2,"Tab 2")
self.tab1UI()

def tab1UI(self):
vlayout = QVBoxLayout(self.tab1)

hlayout1 = QHBoxLayout()
self.comboBox = QComboBox(self.tab1)
self.comboBox.addItems(['ABC', 'BCD', 'CDE'])

self.button = QPushButton('Add Cmd', self.tab1)
self.button.clicked.connect(self.handleTest)

hlayout1.addWidget(self.comboBox)
hlayout1.addWidget(self.button)
hlayout1.addItem(QSpacerItem(100, 10, QSizePolicy.Expanding, QSizePolicy.Preferred))

vlayout.addLayout(hlayout1)

self.b = QTextEdit(self.tab1)
vlayout.addWidget(self.b)

hlayout2 = QHBoxLayout()

self.buttonSend = QPushButton('Send Batch', self.tab1)
self.buttonClear = QPushButton('Clear', self.tab1)
self.buttonClear.clicked.connect(self.deletevalue)

hlayout2.addItem(QSpacerItem(100, 10, QSizePolicy.Expanding, QSizePolicy.Preferred))
hlayout2.addWidget(self.buttonSend)
hlayout2.addWidget(self.buttonClear)
hlayout2.addItem(QSpacerItem(100, 10, QSizePolicy.Expanding, QSizePolicy.Preferred))

vlayout.addLayout(hlayout2)
self.setTabText(4,"BatchCMDS")

def handleTest(self):
self.b.append(self.comboBox.currentText())

def deletevalue(self):
self.b.clear()

关于python - 当窗口大小减小时,所有小部件都会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48386297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com