#python# python界面分离文件编写

新手小白,在一个ADXL345.py文件中得到了x,y,z三个数据,界面分离文件如何操作,能使x,y,z三个数据分别显示在不同控件中,希望大神能打个样,万分感谢

img


ADXL345.py
from time import sleep
import smbus

revision = ([l[12:-1] for l in open('/proc/cpuinfo', 'r').readlines() if l[:8] == 'Revision']+['0000'])[0]
bus = smbus.SMBus(1 if int(revision, 16) >= 4 else 0)

EARTH_GRAVITY_MS2 = 9.80665
SCALE_MULTIPLIER = 0.004
DATA_FORMAT = 0x31
BW_RATE = 0x2C
POWER_CTL = 0x2D

BW_RATE_1600HZ = 0x0F
BW_RATE_800HZ = 0x0E
BW_RATE_400HZ = 0x0D
BW_RATE_200HZ = 0x0C
BW_RATE_100HZ = 0x0B
BW_RATE_50HZ = 0x0A
BW_RATE_25HZ = 0x09

RANGE_2G = 0x00
RANGE_4G = 0x01
RANGE_8G = 0x02
RANGE_16G = 0x03

MEASURE = 0x08
AXES_DATA = 0x32


class adxl345:
    address = None

    def __init__(self, address=0x53):
        self.address = address
        self.setBandwidthRate(BW_RATE_100HZ)
        self.setRange(RANGE_2G)
        self.enableMeasurement()

    def enableMeasurement(self):
        bus.write_byte_data(self.address, POWER_CTL, MEASURE)

    def setBandwidthRate(self, rate_flag):
        bus.write_byte_data(self.address, BW_RATE, rate_flag)

    def setRange(self, range_flag):
        value = bus.read_byte_data(self.address, DATA_FORMAT)
        value &= ~0x0F
        value |= range_flag
        value |= 0x08
        bus.write_byte_data(self.address, DATA_FORMAT, value)

    def getAxes(self,  gforce=False):
        bytes = bus.read_i2c_block_data(self.address, AXES_DATA, 6)
        x = bytes[0] | (bytes[1] << 8)
        if x & (1 << 16 - 1):
            x = x - (1 << 16)

        y = bytes[2] | (bytes[3] << 8)
        if y & (1 << 16 - 1):
            y = y - (1 << 16)

        z = bytes[4] | (bytes[5] << 8)
        if z & (1 << 16 - 1):
            z = z - (1 << 16)

        x = x * SCALE_MULTIPLIER
        y = y * SCALE_MULTIPLIER
        z = z * SCALE_MULTIPLIER

        if  gforce == False:
            x = x * EARTH_GRAVITY_MS2
            y = y * EARTH_GRAVITY_MS2
            z = z * EARTH_GRAVITY_MS2

        x = round(x, 4)
        y = round(y, 4)
        z = round(z, 4)

        return {'x': x, 'y': y, 'z': z}

界面分离文件main.py
from rovcontrol import Ui_MainWindow
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QDialog
import sys
from callrovcontrol import UtilWindowUI


class UtilWindowUI(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(UtilWindowUI, self).__init__()
        self.setupUi(self)
        **此处如何编写**

if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = UtilWindowUI()
    widget.show()
    sys.exit(app.exec_())


main函数只应该负责把窗口显示出来
剩下的工作交给窗体本身的代码来做
什么时候执行代码应该是你填写完文本框之后按下按钮触发函数执行
而不是main函数在后面偷偷的执行
既然你编写的是GUI,那就应该有控件思维,所有用户交互都应该通过控件,而不要再print,用户怎么看呢
什么时候算是填完了也应该是用户自己说了算,而不是你后台不停的死循环读取文本框

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^