Как напечатать текст в редакторе с помощью PyQt5 - PullRequest
0 голосов
/ 20 февраля 2019

Я только начал изучать, как создать графический интерфейс с использованием PyQt5.Я прослеживаю некоторые примеры в Интернете и пытаюсь создать графический интерфейс для практики.Но у меня проблема, когда я пытался показать текст рядом с редактором.Я следую тому пути, который нашел в интернете, но он просто не работает.Может кто-нибудь сказать мне, как это исправить?

Я комментирую часть, которую я пытаюсь показать текст в моем коде

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_())

1 Ответ

0 голосов
/ 20 февраля 2019

Макеты используются для управления положением и размером виджетов, поэтому вы не должны использовать перемещение или изменение размера, вы никогда не устанавливали, к какому виджету относится макет, и, наконец, QMainWindow - это специальный виджет, в котором вы должны установить центральный виджет.В следующем разделе есть решение:

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()
...