简体   繁体   English

PyQt5 未在 label 上显示全文

[英]PyQt5 not showing full text on label

I have this Lable in my PyQt GUI: self.labelDirectory.setText("Insert directories name using a semicolumn (;) to separate them").我的 PyQt GUI 中有这个标签:self.labelDirectory.setText("Insert directory name using a semicolumn (;) to separate them")。 But in the actual application it's cutted and only show the first part of the text photo here .但在实际应用中它被剪掉了,这里只显示了文字照片的第一部分。

I tried using a new line (\n) but it doesn't do much with new line我尝试使用新行 (\n) 但它对新行没有太大作用

full code:完整代码:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys


class MyWindow(QMainWindow):
def __init__(self):
    super(MyWindow, self).__init__()
    self.setGeometry(0, 0, 800, 800)
    self.setWindowTitle("BocaWare")
    self.initUi()

def initUi(self):
    #data inizio
    self.labelFirstDate = QtWidgets.QLabel(self)
    self.labelFirstDate.setText("First Date")
    self.labelFirstDate.move(20, 0)
    self.firstDate = QtWidgets.QDateEdit(self)
    self.firstDate.setGeometry(QtCore.QRect(10, 30, 100, 30))
    #data fine
    self.labelEndDate = QtWidgets.QLabel(self)
    self.labelEndDate.setText("End Date")
    self.labelEndDate.move(20, 60)
    self.endDate = QtWidgets.QDateEdit(self)
    self.endDate.setGeometry(QtCore.QRect(10, 85, 100, 30))
    #casella testo per nome directory
    self.labelDirectory = QtWidgets.QLabel(self)
    #self.labelDirectory.setText("Inserire i nomi delle directory separati l'un l'altro con un punto e virgola (;)")
    self.labelDirectory.setText("Insert directories \n name using a semicolumn (;) to separate them")
    self.labelDirectory.move(20, 120)
    self.directory = QtWidgets.QLineEdit(self)
    self.directory.setGeometry(QtCore.QRect(10, 170, 400, 30))
    #bottone invio
    self.b1 = QtWidgets.QPushButton(self)
    self.b1.setGeometry(QtCore.QRect(10, 200, 100, 30))
    self.b1.setText("Submit")
    self.b1.clicked.connect(self.submitClick)
    

def submitClick(self):
    print(self.firstDate.date().toString("yyyy-MM-dd"))
    print(self.endDate.date().toString("yyyy-MM-dd"))
    print(self.directory.text())
    directories = self.directory.text().split(";")
    for directory in directories:
        print(directory)


def window():
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())


window()

Using some kind of layout is going to be helpful rather than manually sizing and positioning widgets.使用某种布局会比手动调整大小和定位小部件更有帮助。 It looks like your label is just getting clipped based on its size, but rather than fixing that, maybe try a simple QFormLayout.看起来您的 label 只是根据其大小进行裁剪,但与其修复它,不如尝试一个简单的 QFormLayout。 You could also use a combinations of QVBoxLayout, QHBoxLayout, and QSpacer to achieve something similar.您还可以使用 QVBoxLayout、QHBoxLayout 和 QSpacer 的组合来实现类似的效果。

form layout表单布局

from PyQt5 import QtWidgets
import sys


class MyWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()

        self.setGeometry(0, 0, 800, 800)
        self.setWindowTitle("BocaWare")

        self._init_ui()

    def _init_ui(self):

        self.central_widget = QtWidgets.QWidget(self)
        self.setCentralWidget(self.central_widget)
        self.layout = QtWidgets.QFormLayout(self.central_widget)

        # data inizio
        self.labelFirstDate = QtWidgets.QLabel(self)
        self.labelFirstDate.setText("First Date")
        self.firstDate = QtWidgets.QDateEdit(self)
        # data fine
        self.labelEndDate = QtWidgets.QLabel(self)
        self.labelEndDate.setText("End Date")
        self.endDate = QtWidgets.QDateEdit(self)
        # casella testo per nome directory
        self.labelDirectory = QtWidgets.QLabel(self)
        # self.labelDirectory.setText("Inserire i nomi delle directory separati l'un l'altro con un punto e virgola (;)")
        self.labelDirectory.setText("Insert directories name using a semicolumn (;) to separate them")
        self.directory = QtWidgets.QLineEdit(self)
        # bottone invio
        self.b1 = QtWidgets.QPushButton(self)
        self.b1.setText("Submit")
        self.b1.clicked.connect(self.submit_click)

        self.layout.addRow(self.labelFirstDate)
        self.layout.addRow(self.firstDate)
        self.layout.addRow(self.labelEndDate)
        self.layout.addRow(self.endDate)
        self.layout.addRow(self.labelDirectory)
        self.layout.addRow(self.directory)
        self.layout.addRow(self.b1)

    def submit_click(self):
        print(self.firstDate.date().toString("yyyy-MM-dd"))
        print(self.endDate.date().toString("yyyy-MM-dd"))
        print(self.directory.text())
        directories = self.directory.text().split(";")
        for directory in directories:
            print(directory)


app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM