我想为我的python脚本开发一个前端人机界面,它使用定制设计的电子电路从Raspberry pi获取各种温度和DI/DOs。我已经管理好了python端。现在我想把所有的输入值和按钮(用于操作DOs)放在一个用户可以看到和操作的LCD屏幕上。在
到目前为止,我在一个特殊的应用程序中使用了一个样式表。这是通过QT设计器完成的,因为我对QT一无所知。我也可以放置按钮和指示器,但是当小部件调整大小时,它们不会移动。在第一张图片中,一个测试按钮被放置在我需要的地方。在
按钮正确放置在QT设计器中。在
但当我调整窗口大小时,背景图像会移动,但按钮仍会保留。在
调整窗口大小时按钮不移动。在
如何使按钮相对于窗口小部件的位置和大小?在
谢谢!在
编辑:一个类似的问题被问到here。我在各种论坛上读到,必须使用resizeEvent()和move()的一些组合。但我不知道该把它添加到我的代码中。从QT designer的.ui文件输出转换为.py时的当前代码:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_TabWidget1(object):
def setupUi(self, TabWidget1):
TabWidget1.setObjectName("TabWidget1")
TabWidget1.setEnabled(True)
TabWidget1.resize(1092, 867)
# TabWidget1.move(0, 0)
self.tab1 = QtWidgets.QWidget()
self.tab1.setAutoFillBackground(False)
self.tab1.setStyleSheet("image:url(:/images/Jaggery Unit Frontend V0.11.png)")
self.tab1.setObjectName("tab1")
self.pushButton = QtWidgets.QPushButton(self.tab1)
self.pushButton.setGeometry(QtCore.QRect(310, 220, 75, 23))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy)
self.pushButton.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
self.pushButton.setLayoutDirection(QtCore.Qt.LeftToRight)
self.pushButton.setObjectName("pushButton")
TabWidget1.addTab(self.tab1, "")
self.tab2 = QtWidgets.QWidget()
self.tab2.setObjectName("tab2")
TabWidget1.addTab(self.tab2, "")
self.retranslateUi(TabWidget1)
TabWidget1.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(TabWidget1)
def retranslateUi(self, TabWidget1):
_translate = QtCore.QCoreApplication.translate
TabWidget1.setWindowTitle(_translate("TabWidget1", "TabWidget"))
self.pushButton.setText(_translate("TabWidget1", "PushButton"))
TabWidget1.setTabText(TabWidget1.indexOf(self.tab1), _translate("TabWidget1", "Tab 1"))
TabWidget1.setTabText(TabWidget1.indexOf(self.tab2), _translate("TabWidget1", "Tab 2"))
import resources
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
TabWidget1 = QtWidgets.QTabWidget()
ui = Ui_TabWidget1()
ui.setupUi(TabWidget1)
TabWidget1.show()
sys.exit(app.exec_())
我想出了办法。由于我缺乏QT方面的知识,我不知道这是如何工作的,只知道它是如何工作的。我的UI包含一个带有选项卡的窗口。在第一个选项卡“概述”中,有我需要重新定位的按钮和lcd编号。在
如here所示,我遵循它的示例,创建了另一个“class object”,它调用QT Designer创建的原始UI。其余部分是以下代码中的注释。在
希望它能帮助像我这样的人。谢谢!在
相关问题 更多 >
编程相关推荐