- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我编写了一段代码来与分数表并排打印问题。但是,当尝试使用 QHBoxLayout (如果运行)显示表格时,不会显示表格,但不会显示错误。另一方面,当使用 QVBoxLayout 时,它会在我运行代码时显示。我是否可以将表格与问题/答案框并排(水平)呈现?拆分器可以作为替代方案吗?如果可以,我如何在代码中实现它?
我的代码如下:
import sys, os, random
from PyQt4 import QtCore, QtGui
StudentNames = []
StudentScores = []
class StartTest(QtGui.QMainWindow):
def __init__(self, questions, parent=None):
global StudentNames
global StudentScores
super(StartTest, self).__init__(parent)
self.stack = QtGui.QStackedWidget(self)
self.setCentralWidget(self.stack)
StudentNames.append('Hamzah Akhtar')
StudentNames.append('Bob Marley')
StudentNames.append('John Meadows')
StudentScores.append(int(0))
StudentScores.append(int(0))
StudentScores.append(int(0))
for index, question in enumerate(questions):
page = Question(question, self)
page.submit.clicked[()].connect(
lambda index=index: self.handleSubmit(index))
self.stack.addWidget(page)
self.answers = []
def handleSubmit(self, index):
page = self.stack.widget(index)
answer = page.answer.text()
# validate submitted answer...
self.answers.append(answer)
if index < self.stack.count() - 1:
self.stack.setCurrentIndex(index + 1)
class Question(QtGui.QWidget):
def __init__(self, question, parent=None):
global StudentNames
global StudentScores
super(Question, self).__init__(parent)
self.Table = QtGui.QTableWidget()
self.Table.setRowCount(3)
self.Table.setColumnCount(1)
self.Table.setVerticalHeaderLabels(StudentNames)
self.Table.setHorizontalHeaderLabels(['Scores'])
self.question = QtGui.QLabel(question, self)
self.answer = QtGui.QLineEdit(self)
self.submit = QtGui.QPushButton('Submit', self)
form = QtGui.QFormLayout()
form.addRow(self.question, self.answer)
layout = QtGui.QVBoxLayout(self)
layout.addLayout(form)
layout.addWidget(self.submit)
hlayout = QtGui.QHBoxLayout(self)
hlayout.addLayout(layout)
hlayout.addWidget(self.Table)
self.setLayout(hlayout)
if __name__ == '__main__':
User = ''
app = QtGui.QApplication([])
questions = [
'What is 5+5?',
'What is 45+10?',
'What is 28+47?',
'What is 22+13?',
]
window = StartTest(questions)
window.showFullScreen()
app.exec_()
最佳答案
您可以将占位符小部件设置为中央小部件。然后添加水平布局并将小部件添加到该布局。
centralWidget = QtGui.QWidget(self)
self.setCentralWidget(centralWidget)
mainLayout = QtGui.QHBoxLayout(centralWidget)
self.scoreTable = QtGui.QTableWidget(self)
self.scoreTable.setRowCount(len(StudentNames))
self.scoreTable.setColumnCount(1)
self.scoreTable.setVerticalHeaderLabels(StudentNames)
self.scoreTable.setHorizontalHeaderLabels(['Scores'])
for i, score in enumerate(StudentScores):
item = QtGui.QTableWidgetItem(str(score))
self.scoreTable.setItem(i, 0, item)
mainLayout.addWidget(self.stack)
mainLayout.addWidget(self.scoreTable)
完整示例:(使用 PySide 进行测试,但在 pyqt 中应该同样工作)
import sys, os, random
from PyQt4 import QtCore, QtGui
StudentNames = []
StudentScores = []
class StartTest(QtGui.QMainWindow):
def __init__(self, questions, parent=None):
global StudentNames
global StudentScores
super(StartTest, self).__init__(parent)
self.stack = QtGui.QStackedWidget(self)
StudentNames.append('Hamzah Akhtar')
StudentNames.append('Bob Marley')
StudentNames.append('John Meadows')
StudentScores.append(int(0))
StudentScores.append(int(0))
StudentScores.append(int(0))
for index, question in enumerate(questions):
page = Question(question, self)
page.submit.clicked[()].connect(
lambda index=index: self.handleSubmit(index))
self.stack.addWidget(page)
self.answers = []
centralWidget = QtGui.QWidget(self)
self.setCentralWidget(centralWidget)
mainLayout = QtGui.QHBoxLayout(centralWidget)
self.scoreTable = QtGui.QTableWidget(self)
self.scoreTable.setRowCount(len(StudentNames))
self.scoreTable.setColumnCount(1)
self.scoreTable.setVerticalHeaderLabels(StudentNames)
self.scoreTable.setHorizontalHeaderLabels(['Scores'])
for i, score in enumerate(StudentScores):
item = QtGui.QTableWidgetItem(str(score))
self.scoreTable.setItem(i, 0, item)
mainLayout.addWidget(self.stack)
mainLayout.addWidget(self.scoreTable)
def handleSubmit(self, index):
page = self.stack.widget(index)
answer = page.answer.text()
# validate submitted answer...
self.answers.append(answer)
if index < self.stack.count() - 1:
self.stack.setCurrentIndex(index + 1)
class Question(QtGui.QWidget):
def __init__(self, question, parent=None):
super(Question, self).__init__(parent)
self.question = QtGui.QLabel(question, self)
self.answer = QtGui.QLineEdit(self)
self.submit = QtGui.QPushButton('Submit', self)
form = QtGui.QFormLayout(self)
form.addRow(self.question, self.answer)
form.addRow(self.submit)
if __name__ == '__main__':
User = ''
app = QtGui.QApplication([])
questions = [
'What is 5+5?',
'What is 45+10?',
'What is 28+47?',
'What is 22+13?',
]
window = StartTest(questions)
window.show()
# window.showFullScreen()
app.exec_()
关于python - 是否可以将 QTableWidget 水平添加到布局中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23407727/
有谁知道的返回值之间的关系 QTableWidget::item(x, y) 和 QTableWidget::cellWidget (x, y) 在同一个 QTableWidget 和同一个 row
当我将按钮拖放到 QTableWidget 中时,按钮会从旧位置消失,并且我放置按钮的单元格中不会显示任何内容。 有人可以提出问题是什么吗? 请在下面找到代码 import sys from PyQt
我有一个 QTableWidget,我想在其中填充另一个 QTableWidget 的字段。 这是它的样子: -------------------------- Name | Class | Sec
我问了一个与此非常相似的问题,但回答者提供了少量帮助,我无法解决我的问题。我想我会重新问这个问题,因为没有其他人回答我的问题。我想知道如何将 QTableWidget 的数据从一个窗口复制到另一个窗口
我的程序遇到了一个问题,我不知道如何解决。问题是我在两个类中有一个Qtablewidget,我使用信号和槽机制来传输一个QVector,它包含一个类的QTablewidgetItems,并将它放在其他
我有一个问题:调用 QTableWidget::update 不会导致 QTableWidget::paintEvent。 简要说明:- QTableWidgetEx - 派生自 QTableWidg
我正在使用 QTableWidget,当用户单击特定行时,我使用该索引来执行某些操作。我还使用 setSortEnable 启用了排序,所以当我通过单击标题对其进行排序时,所有行索引都会更改,但我想要
假设我有一个充满数据的二维数组,比如 10 x 10。内容以及行数可以随时更改。 现在我想在 QTableWidget 中显示这些数据。 我使用超时 1 秒的计时器来刷新表格内容。在超时槽中,如果我使
QTableWidget 有搜索用户数据行的方法吗? 类似的东西: //set user data row->setData(0, Qt::UserRole, "ID001"); //find row
我使用 UI 编辑器创建 QTableWidget。 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui:
QTableWdiget对于简单的网格显示来说非常棒。更改颜色、字体等非常简单。 但是,我没有设法用更少的垂直空白来使网格看起来更“紧密”。我看到 Qt 文档讨论了(例如 here ) margin
可以为单元格设置占位符吗?我认为它可以通过为特定单元格设置 QLineEdit 来实现,但可能是 QTableWidget,或者 QTableWidgetItem 可以在没有自定义小部件的情况下做到这
当按下堆叠在左侧的按钮选择了 QTableWidget 中的整行时,是否有信号?我希望启用某些功能,但不确定如何启用? 提前致谢! 最佳答案 您有几个不同的选择。您所要求的最直接的方法是使用 QHea
在下面的代码中有两个样式表:problemStylesheet 和 okStylesheet。当我为 QTableWidget 使用 okStylesheet 时一切正常。标签在滚动。问题是如果我使用
QTableWidget由多个Selection Modi组成,可以通过方法进行选择 setSelectionMode (QAbstractItemView::SelectionMode mode)
我正在尝试使用最新的 Qt SDK (4.7.4) 来设置 QTableWidget 的样式。通过谷歌搜索,我发现我需要做这样的事情: QHeaderView::section { backg
我有一个 QTableWidget,我通过标题列使用它的默认排序功能,但我在 QTableWidget 中的一列是整数类型,并且通过 QTableWidget 默认排序它像字符串一样排序。所以有任何方
我有一个带有自定义小部件的 QTableWidget。这些小部件很大,几乎填满了整个滚动区域的高度,因此只有一行是可见的。 我可以用鼠标滚轮或拖动滚动条滚动,但行总是跳动。 有没有办法让QTableW
我尝试了 .setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) ,效果很好,但需要用户将鼠标移动到滚动条并使用它来体验平
我有一个带有自定义小部件的 QTableWidget。这些小部件很大,几乎填满了整个滚动区域的高度,因此只有一行是可见的。 我可以用鼠标滚轮或拖动滚动条滚动,但行总是跳动。 有没有办法让QTableW
我是一名优秀的程序员,十分优秀!