新手小白,在一个ADXL345.py文件中得到了x,y,z三个数据,界面分离文件如何操作,能使x,y,z三个数据分别显示在不同控件中,希望大神能打个样,万分感谢
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,用户怎么看呢
什么时候算是填完了也应该是用户自己说了算,而不是你后台不停的死循环读取文本框