【发布时间】:2022-01-11 15:51:21
【问题描述】:
所以我创建了一个新的小部件,我试图将它放在我创建的框架的右侧,但 pyqt 与它们重叠,而不是它自己的小部件工作正常。我也试过 QHboxLayout 和 QVBoxLayout 但他们都没有工作。任何帮助将不胜感激。
import sys
from PyQt5 import QtWidgets,QtGui
from PyQt5.QtWidgets import (QMainWindow, QAction, QApplication, QDesktopWidget,
QDialog, QTextEdit, QGridLayout, QPushButton, QWidget,QListWidget,QScrollBar,QListWidgetItem)
class mainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.resize(1280,720)
tempWidget=QWidget()
self.setCentralWidget(tempWidget)
tempFrame=QtWidgets.QFrame()
self.palette=tempFrame.palette()
self.palette.setColor(QtGui.QPalette.Window, QtGui.QColor(255,255,255))
tempFrame.setPalette(self.palette)
tempFrame.setAutoFillBackground(True)
box=QtWidgets.QGridLayout()
box.addWidget(tempFrame,0,0,1,3)
box.addWidget(someWidget(),0,1,1,1)
tempWidget.setLayout(box)
self.show()
class someWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.ribbon = QListWidget()
self.chat = QTextEdit()
scroll_bar = QScrollBar()
scroll_bar.setStyleSheet("background : lightgrey;")
self.ribbon.setVerticalScrollBar(scroll_bar)
self.chat.setFixedHeight(
int((self.chat.fontMetrics().lineSpacing() * 3) +
(self.chat.document().documentMargin() * 2) +
(self.chat.frameWidth() * 2) - 1)
)
sendBtn = QPushButton('Send')
sendBtn.clicked.connect(self.Something)
grid = QGridLayout()
grid.setSpacing(3)
grid.addWidget(self.ribbon, 0, 0, 1, 3)
grid.addWidget(self.chat, 1, 0, 1, 1)
grid.addWidget(sendBtn, 1, 2)
grid.setRowStretch(0, 1)
grid.setColumnStretch(0, 1)
self.setLayout(grid)
def Something(self):
self.ribbon.addItem(QListWidgetItem(self.chat.toPlainText()));self.chat.setText('')
if __name__ == '__main__':
app = QApplication(sys.argv)
a=mainWindow()
sys.exit(app.exec_())
【问题讨论】:
-
一些不相关但仍然很重要的建议: 1. 类名和常量名应始终大写,而函数和变量应始终以小写字母开头; 2.函数和两个分隔类之间应该总是有一个空行; 3. 始终在用于赋值的等号周围放置空格; 4. 不要使用分号来分隔函数。不要低估所有这些方面,因为它们对于可读性非常很重要(这是必不可少的)。更多内容可以阅读官方Style Guide for Python Code。
-
是的,我应该把代码写得更具可读性,但这只是我匆忙创建的一个临时示例。但我明白了,我应该这样做。
-
不应匆忙创建问题,尤其是他们的示例 :-)
标签: python python-3.x pyqt pyqt5