如何使用PyQt5在Editor旁边打印文本

问题描述 投票:1回答:1

我刚开始学习如何使用PyQt5构建GUI。我在互联网上追踪一些例子并尝试为练习创建一个GUI。但是当我试图在编辑器旁边显示文本时,我遇到了问题。我按照我在互联网上找到的方式,但它没有工作。任何人都可以告诉我如何解决它?

我评论我试图在我的代码中显示文本的部分

enter image description here

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import xml.etree.cElementTree as ET

class App(QMainWindow):

def __init__(self):
    super().__init__()
    self.title = 'PyQt5 textbox - pythonspot.com'
    self.left = 10
    self.top = 10
    self.width = 400
    self.height = 200
    self.initUI()

def initUI(self):
    self.setWindowTitle(self.title)
    self.setGeometry(self.left, self.top, self.width, self.height)

    # Create textbox
    self.textbox = QLineEdit(self)
    #self.textbox.setAlignment(Qt.AlignRight)
    self.textbox.move(80, 20)
    self.textbox.resize(200,40)


    self.textbox2 = QLineEdit(self)
    self.textbox2.move(80, 80)
    self.textbox2.resize(200,40)        



    #####################################
    # the part i am trying to show text #
    #####################################  
    txt1 = QLabel("case indes",self)
    txt1.setAlignment(Qt.AlignCenter)

    mytext = QFormLayout()
    mytext.addRow(txt1,self.textbox) # not showing in Aligned position 
    mytext.addRow("Case type",tbox2) # not working




    # Create a button in the window
    self.button = QPushButton('Show text', self)
    self.button.move(20,150)


    # connect button to function on_click
    self.button.clicked.connect(self.on_click)
    self.center()
    self.show()

@pyqtSlot()
def on_click(self):
    textboxValue = self.textbox.text()
    textboxValue2 = self.textbox2.text()
    QMessageBox.question(self, 'Message - pythonspot.com', "You typed: " + textboxValue + " , second msg is: " + textboxValue2, QMessageBox.Ok, QMessageBox.Ok)
    print(textboxValue)
    self.textbox.setText("")
    self.textbox2.setText("")

def center(self):  
    qr = self.frameGeometry()
    cp = QDesktopWidget().availableGeometry().center()
    qr.moveCenter(cp)
    self.move(qr.topLeft())        

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
python python-3.x pyqt pyqt5 qformlayout
1个回答
0
投票

布局用于管理窗口小部件的位置和大小,因此您不应使用移动或调整大小,您从未建立布局所属的窗口小部件,最后QMainWindow是一个特殊窗口小部件,您必须在其中建立一个centralwidget。在下一节中有解决方案:

def initUI(self):
    self.setWindowTitle(self.title)
    self.setGeometry(self.left, self.top, self.width, self.height)

    central_widget = QWidget()
    self.setCentralWidget(central_widget)

    # Create textbox
    self.textbox = QLineEdit()
    self.textbox2 = QLineEdit()   

    txt1 = QLabel("case indes",self)
    txt1.setAlignment(Qt.AlignCenter)    

    mytext = QFormLayout(central_widget)
    mytext.addRow(txt1, self.textbox) # not showing in Aligned position 
    mytext.addRow("Case type", self.textbox2) # not working

    # Create a button in the window
    self.button = QPushButton('Show text')
    mytext.addRow(self.button)
    # connect button to function on_click
    self.button.clicked.connect(self.on_click)
    self.center()
    self.show()
© www.soinside.com 2019 - 2024. All rights reserved.