猿问

pyqt5。运行字符串和时钟

我有一个带有标签的表格(顶部的时钟和底部的运行字符串)。我在表单中添加了 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 ... "))



哈士奇WWW
浏览 134回答 1
1回答

江户川乱折腾

您需要label从layoutimport sysfrom PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5 import QtWidgetsfrom PyQt5.QtCore import QTimer, QTime#import untitledclass Ui_Form(object):&nbsp; &nbsp; def setupUi(self, Form):&nbsp; &nbsp; &nbsp; &nbsp; Form.setObjectName("Form")&nbsp; &nbsp; &nbsp; &nbsp; Form.resize(500, 350)&nbsp; &nbsp; &nbsp; #(498, 299)#&nbsp; &nbsp; &nbsp; &nbsp; self.verticalLayoutWidget = QtWidgets.QWidget(Form)#&nbsp; &nbsp; &nbsp; &nbsp; self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 479, 281))#&nbsp; &nbsp; &nbsp; &nbsp; self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")&nbsp; &nbsp; &nbsp; &nbsp; self.verticalLayout = QtWidgets.QVBoxLayout(Form)&nbsp; &nbsp; &nbsp;#(self.verticalLayoutWidget)&nbsp; &nbsp; &nbsp; &nbsp; self.verticalLayout.setContentsMargins(0, 0, 0, 50)&nbsp; &nbsp;# + 50&nbsp; &nbsp; &nbsp; &nbsp; self.verticalLayout.setObjectName("verticalLayout")&nbsp; &nbsp; &nbsp; &nbsp; self.label_2 = QtWidgets.QLabel(Form)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#(self.verticalLayoutWidget)&nbsp; &nbsp; &nbsp; &nbsp; font = QtGui.QFont()&nbsp; &nbsp; &nbsp; &nbsp; font.setPointSize(15)&nbsp; &nbsp; &nbsp; &nbsp; self.label_2.setFont(font)&nbsp; &nbsp; &nbsp; &nbsp; self.label_2.setText("")&nbsp; &nbsp; &nbsp; &nbsp; self.label_2.setAlignment(QtCore.Qt.AlignCenter)&nbsp; &nbsp; &nbsp; &nbsp; self.label_2.setObjectName("label_2")&nbsp; &nbsp; &nbsp; &nbsp; self.verticalLayout.addWidget(self.label_2)&nbsp; &nbsp; &nbsp; &nbsp; self.tableWidget = QtWidgets.QTableWidget(Form)&nbsp; &nbsp; &nbsp; &nbsp;#(self.verticalLayoutWidget)&nbsp; &nbsp; &nbsp; &nbsp; self.tableWidget.setObjectName("tableWidget")&nbsp; &nbsp; &nbsp; &nbsp; self.tableWidget.setColumnCount(4)&nbsp; &nbsp; &nbsp; &nbsp; self.tableWidget.setRowCount(3)&nbsp; &nbsp; &nbsp; &nbsp; self.verticalLayout.addWidget(self.tableWidget)#&nbsp; &nbsp; &nbsp; &nbsp; self.label = QtWidgets.QLabel(self.verticalLayoutWidget)#&nbsp; &nbsp; &nbsp; &nbsp; font = QtGui.QFont()#&nbsp; &nbsp; &nbsp; &nbsp; font.setPointSize(15)#&nbsp; &nbsp; &nbsp; &nbsp; self.label.setFont(font)#&nbsp; &nbsp; &nbsp; &nbsp; self.label.setObjectName("label")#&nbsp; &nbsp; &nbsp; &nbsp; self.verticalLayout.addWidget(self.label)&nbsp; &nbsp; &nbsp; &nbsp; self.retranslateUi(Form)&nbsp; &nbsp; &nbsp; &nbsp; QtCore.QMetaObject.connectSlotsByName(Form)&nbsp; &nbsp; def retranslateUi(self, Form):&nbsp; &nbsp; &nbsp; &nbsp; _translate = QtCore.QCoreApplication.translate&nbsp; &nbsp; &nbsp; &nbsp; Form.setWindowTitle(_translate("Form", "Form"))#&nbsp; &nbsp; &nbsp; &nbsp; self.label.setText(_translate("Form", "Running string ... "))class Widget(QtWidgets.QWidget):&nbsp; &nbsp; def __init__(self):&nbsp; &nbsp; &nbsp; &nbsp; super(Widget, self).__init__()&nbsp; &nbsp; &nbsp; &nbsp; self.ui = Ui_Form()&nbsp; &nbsp; &nbsp; &nbsp; self.ui.setupUi(self)&nbsp; &nbsp; &nbsp; &nbsp; self.ui.tableWidget.setAlternatingRowColors(True) # +&nbsp; &nbsp; &nbsp; &nbsp; self.ui.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch) # +&nbsp; &nbsp; &nbsp; &nbsp; self.labelMove = QtWidgets.QLabel("Running string ... ", self)&nbsp; # +&nbsp; &nbsp; &nbsp; &nbsp; font = QtGui.QFont()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # +&nbsp; &nbsp; &nbsp; &nbsp; font.setPointSize(15)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# +&nbsp; &nbsp; &nbsp; &nbsp; self.labelMove.setFont(font)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # +&nbsp; &nbsp; &nbsp; &nbsp; self.x = self.width() #477&nbsp; &nbsp; &nbsp; &nbsp; self.y = self.height() - 30&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; self.labelMove.move(self.x, self.y)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; self.timer = QTimer(self)&nbsp; &nbsp; &nbsp; &nbsp; self.timer.timeout.connect(self.move_label_left)&nbsp; &nbsp; &nbsp; &nbsp; self.timer.start(15)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# 100&nbsp; &nbsp; &nbsp; &nbsp; self.timer2 = QTimer(self)&nbsp; &nbsp; &nbsp; &nbsp; self.timer2.timeout.connect(self.show_clock)&nbsp; &nbsp; &nbsp; &nbsp; self.timer2.start(1000)&nbsp; &nbsp; def move_label_left(self):&nbsp; &nbsp; &nbsp; &nbsp; if self.x <= -150:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# 477&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.x = self.width()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # 477&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.x -= 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.labelMove.move(self.x, self.height() - 30)&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.x -= 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.labelMove.move(self.x, self.height() - 30)&nbsp; &nbsp; &nbsp; &nbsp; self.labelMove.adjustSize()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# +++&nbsp; &nbsp; def show_clock(self):&nbsp; &nbsp; &nbsp; &nbsp; time = QTime.currentTime()&nbsp; &nbsp; &nbsp; &nbsp; text = time.toString('hh:mm:ss')&nbsp; &nbsp; &nbsp; &nbsp; self.ui.label_2.setText(text)if __name__ == "__main__":&nbsp; &nbsp; app = QtWidgets.QApplication(sys.argv)&nbsp; &nbsp; w = Widget()&nbsp; &nbsp; w.show()&nbsp; &nbsp; sys.exit(app.exec_())
随时随地看视频慕课网APP

相关分类

Python
我要回答