向窗口添加不同的文本

时间:2014-03-20 10:29:50

标签: python python-3.x pyqt4

我有一个按钮和一个文本标签。每次按下按钮,我都希望从行编辑放置的文本放在窗口上。到目前为止,我只能在窗口上绘制一个文本,即使我创建了另一个文本标签。我试过点击一个点击计数,确定用户点击按钮的次数,但这也不起作用。到目前为止,我有什么建议?

import sys
import os
from PyQt4 import QtCore, QtGui
from PyQt4.QtCore import *
from PyQt4.QtGui  import *
from PyQt4.QtGui import QApplication


class Window(QMainWindow):
    def __init__(self, *args):
        QMainWindow.__init__(self, *args)
        self.centralWidget = QWidget(self)
        self.setCentralWidget(self.centralWidget)
        self.setGeometry(450,100,350,680)

        self.btn1 = QPushButton("Enter", self.centralWidget)
        self.btn1.setGeometry(10,50,150, 20)
        self.btn1.clicked.connect(self.enter)

        self.edit = QtGui.QLineEdit(self)
        self.edit.setGeometry(10, 10, 150, 20)

        self.label = QtGui.QLabel(self)
        self.label.setGeometry(240, 170,150, 20)


    def enter(self):
        self.label.setText(self.edit.text())


def main(args):
    global app
    app = App(args)
    app.exec_()

class App(QApplication):
    def __init__(self, *args):
        QApplication.__init__(self, *args)
        self.main = Window()
        self.connect(self, SIGNAL("lastWindowClosed()"), self.byebye )
        self.main.show()

    def byebye( self ):
        self.exit(0)


if __name__ == "__main__":
    main(sys.argv)

1 个答案:

答案 0 :(得分:0)

您的示例代码存在一些问题,主要原因是您尝试手动排列小部件,而不是使用布局。

很难从您的问题中准确地判断出您对输出的期望,因此我假设您希望将行编辑的文字附加到标签上,以便您最终有一系列的。

这是您的示例的简化版本,希望能够满足您的需求:

from PyQt4 import QtCore, QtGui

class Window(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.btn1 = QtGui.QPushButton("Enter", self)
        self.btn1.clicked.connect(self.enter)
        self.edit = QtGui.QLineEdit(self)
        self.label = QtGui.QLabel(self)
        self.label.setAlignment(
            QtCore.Qt.AlignTop | QtCore.Qt.AlignLeft)
        widget = QtGui.QWidget(self)
        layout = QtGui.QVBoxLayout(widget)
        layout.addWidget(self.edit)
        layout.addWidget(self.btn1)
        layout.addWidget(self.label)
        self.setCentralWidget(widget)

    def enter(self):
        text = self.edit.text()
        if text:
            self.label.setText('%s\n%s' % (self.label.text(), text))

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(450, 100, 350, 680)
    window.show()
    sys.exit(app.exec_())