簡體   English   中英

PyQT:通過QTextEdit進行LineEdit

[英]PyQT: LineEdit over QTextEdit

好的,我真的需要幫助……我有一個dockwidget,在那個dockwidget中,我有一個textedit。 好的,到目前為止一切都很好,這是代碼:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'out/untitled.ui'
#
# Created: Mon Sep 16 19:33:15 2013
#      by: PyQt4 UI code generator 4.10.2
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(320, 240)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        MainWindow.setCentralWidget(self.centralwidget)
        self.dockWidget = QtGui.QDockWidget(MainWindow)
        self.dockWidget.setFeatures(QtGui.QDockWidget.NoDockWidgetFeatures)
        self.dockWidget.setObjectName(_fromUtf8("dockWidget"))

        self.textEdit = QtGui.QTextEdit()
        self.textEdit.setGeometry(QtCore.QRect(40, 10, 104, 71))
        self.textEdit.setObjectName(_fromUtf8("textEdit"))
        self.dockWidget.setWidget(self.textEdit)

        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(8), self.dockWidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))

if __name__ == "__main__":
   import sys
   app = QtGui.QApplication(sys.argv)
   Form = QtGui.QMainWindow()
   f = Ui_MainWindow()
   f.setupUi(Form)
   Form.show()
   sys.exit(app.exec_())

現在,我想做的是在窗口(或dockwidget)的底部放置一個行編輯,該行與文本區域重疊,在調整dockwidget的大小時不會移動,並填滿整個dockwidget。 我已經試過了:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'out/untitled.ui'
#
# Created: Mon Sep 16 19:33:15 2013
#      by: PyQt4 UI code generator 4.10.2
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(320, 240)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        MainWindow.setCentralWidget(self.centralwidget)
        self.dockWidget = QtGui.QDockWidget(MainWindow)
        self.dockWidget.setFeatures(QtGui.QDockWidget.NoDockWidgetFeatures)
        self.dockWidget.setObjectName(_fromUtf8("dockWidget"))

        self.textEdit = QtGui.QTextEdit()
        self.textEdit.setGeometry(QtCore.QRect(40, 10, 104, 71))
        self.textEdit.setObjectName(_fromUtf8("textEdit"))
        self.dockWidget.setWidget(self.textEdit)

        QtGui.QLineEdit(self.dockWidget)  # Line edit

        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(8), self.dockWidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))

if __name__ == "__main__":
   import sys
   app = QtGui.QApplication(sys.argv)
   Form = QtGui.QMainWindow()
   f = Ui_MainWindow()
   f.setupUi(Form)
   Form.show()
   sys.exit(app.exec_())

但這不是我想要的。 我真的需要使此工作正常進行,因此任何幫助都將非常有用。 謝謝。

這是一個如何在另一個窗口小部件上顯示窗口小部件的示例:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

#---------
# IMPORT
#---------
import sys

from PyQt4 import QtGui, QtCore

#---------
# DEFINE
#---------
class MyWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self.pushButtonInput = QtGui.QPushButton(self)
        self.pushButtonInput.setText("Toggle the QLineEdit widget!")
        self.pushButtonInput.clicked.connect(self.on_pushButtonInput_clicked)

        self.textEditInput = QtGui.QTextEdit(self)
        self.textEditInput.setText("This is a QTextEdit widget.")
        self.textEditInput.installEventFilter(self)

        self.lineEditInput = QtGui.QLineEdit(self)
        self.lineEditInput.setText("This is a QLineEdit widget.")
        self.lineEditInput.hide()

        self.layoutVertical = QtGui.QVBoxLayout(self)
        self.layoutVertical.addWidget(self.pushButtonInput)
        self.layoutVertical.addWidget(self.textEditInput)

    def eventFilter(self, obj, event):
        if event.type() == QtCore.QEvent.Resize:
            geometry = self.textEditInput.geometry()

            self.lineEditInput.setGeometry(geometry)

        return super(MyWindow, self).eventFilter(obj, event)

    @QtCore.pyqtSlot()
    def on_pushButtonInput_clicked(self):
        if self.lineEditInput.isVisible():
            self.lineEditInput.hide()
        else:
            self.lineEditInput.show()

#---------
# MAIN
#---------
if __name__ == "__main__":    
    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.show()

    sys.exit(app.exec_())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM