为了账号安全,请及时绑定邮箱和手机立即绑定

pyqt5。运行字符串和时钟

pyqt5。运行字符串和时钟

哈士奇WWW 2022-06-28 10:18:53
我有一个带有标签的表格(顶部的时钟和底部的运行字符串)。我在表单中添加了 linker_by_grid (以便在调整表单大小时所有组件都可以按比例调整大小)。当我运行项目时,运行字符串中的每一秒文本都在抽搐。如果我从表单中删除 linker_by_grid,一切正常,但所有组件都不会自动调整大小以适应表单。来自 QtDesigner 的代码:    class Ui_Form(object):        def setupUi(self, Form):            Form.setObjectName("Form")            Form.resize(498, 299)            self.verticalLayoutWidget = QtWidgets.QWidget(Form)            self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 479, 281))            self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")            self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)            self.verticalLayout.setContentsMargins(0, 0, 0, 0)            self.verticalLayout.setObjectName("verticalLayout")            self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget)            font = QtGui.QFont()            font.setPointSize(15)            self.label_2.setFont(font)            self.label_2.setText("")            self.label_2.setAlignment(QtCore.Qt.AlignCenter)            self.label_2.setObjectName("label_2")            self.verticalLayout.addWidget(self.label_2)            self.tableWidget = QtWidgets.QTableWidget(self.verticalLayoutWidget)            self.tableWidget.setObjectName("tableWidget")            self.tableWidget.setColumnCount(0)            self.tableWidget.setRowCount(0)            self.verticalLayout.addWidget(self.tableWidget)            self.label = QtWidgets.QLabel(self.verticalLayoutWidget)            font = QtGui.QFont()            font.setPointSize(15)            self.label.setFont(font)            self.label.setObjectName("label")            self.verticalLayout.addWidget(self.label)            self.retranslateUi(Form)            QtCore.QMetaObject.connectSlotsByName(Form)        def retranslateUi(self, Form):            _translate = QtCore.QCoreApplication.translate            Form.setWindowTitle(_translate("Form", "Form"))            self.label.setText(_translate("Form", "Running string ... "))
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

您需要label从layout


import sys

from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5 import QtWidgets

from PyQt5.QtCore import QTimer, QTime


#import untitled


class Ui_Form(object):

    def setupUi(self, Form):

        Form.setObjectName("Form")

        Form.resize(500, 350)      #(498, 299)


#        self.verticalLayoutWidget = QtWidgets.QWidget(Form)

#        self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 479, 281))

#        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")


        self.verticalLayout = QtWidgets.QVBoxLayout(Form)     #(self.verticalLayoutWidget)

        self.verticalLayout.setContentsMargins(0, 0, 0, 50)   # + 50

        self.verticalLayout.setObjectName("verticalLayout")

        self.label_2 = QtWidgets.QLabel(Form)                 #(self.verticalLayoutWidget)

        font = QtGui.QFont()

        font.setPointSize(15)

        self.label_2.setFont(font)

        self.label_2.setText("")

        self.label_2.setAlignment(QtCore.Qt.AlignCenter)

        self.label_2.setObjectName("label_2")

        self.verticalLayout.addWidget(self.label_2)

        self.tableWidget = QtWidgets.QTableWidget(Form)       #(self.verticalLayoutWidget)

        self.tableWidget.setObjectName("tableWidget")

        self.tableWidget.setColumnCount(4)

        self.tableWidget.setRowCount(3)

        self.verticalLayout.addWidget(self.tableWidget)


#        self.label = QtWidgets.QLabel(self.verticalLayoutWidget)

#        font = QtGui.QFont()

#        font.setPointSize(15)

#        self.label.setFont(font)

#        self.label.setObjectName("label")

#        self.verticalLayout.addWidget(self.label)


        self.retranslateUi(Form)

        QtCore.QMetaObject.connectSlotsByName(Form)


    def retranslateUi(self, Form):

        _translate = QtCore.QCoreApplication.translate

        Form.setWindowTitle(_translate("Form", "Form"))

#        self.label.setText(_translate("Form", "Running string ... "))



class Widget(QtWidgets.QWidget):

    def __init__(self):

        super(Widget, self).__init__()

        self.ui = Ui_Form()

        self.ui.setupUi(self)


        self.ui.tableWidget.setAlternatingRowColors(True) # +

        self.ui.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch) # +


        self.labelMove = QtWidgets.QLabel("Running string ... ", self)  # +

        font = QtGui.QFont()                                            # +

        font.setPointSize(15)                                           # +

        self.labelMove.setFont(font)                                    # +


        self.x = self.width() #477

        self.y = self.height() - 30 

        self.labelMove.move(self.x, self.y)               


        self.timer = QTimer(self)

        self.timer.timeout.connect(self.move_label_left)

        self.timer.start(15)                                 # 100


        self.timer2 = QTimer(self)

        self.timer2.timeout.connect(self.show_clock)

        self.timer2.start(1000)


    def move_label_left(self):

        if self.x <= -150:                                   # 477

            self.x = self.width()                            # 477

            self.x -= 1

            self.labelMove.move(self.x, self.height() - 30)

        else:

            self.x -= 1

            self.labelMove.move(self.x, self.height() - 30)

        self.labelMove.adjustSize()                           # +++


    def show_clock(self):

        time = QTime.currentTime()

        text = time.toString('hh:mm:ss')

        self.ui.label_2.setText(text)



if __name__ == "__main__":

    app = QtWidgets.QApplication(sys.argv)

    w = Widget()

    w.show()

    sys.exit(app.exec_())

//img1.sycdn.imooc.com//62ba653a0001061504010248.jpg

查看完整回答
反对 回复 2022-06-28
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号