问题描述
背景
我正在使用PySide2
创建一个应用程序以连接到我的Arduino蓝牙汽车。我正在使用PyBluez
来发现并连接到设备(HC-06)。
我保持bluetooth.discover_divices()
的默认持续时间不变(8秒),所以当它扫描设备时,我想显示一个旋转的“加载”小部件。我在this问题中找到了解决方法,因此我通过以下方式实现了该应用。
实施
from pyside2.QtWidgets import (
QApplication,QMainWindow,QAction,QDialog,QDialogButtonBox,QVBoxLayout,QLabel,QPushButton
)
from pyside2.QtGui import QIcon,QMovie
from pyside2.QtCore import Qt
import bluetooth
import sys
def connectDevice():
def scan():
btStart.setEnabled(False)
btWait.setVisible(True)
btWaitAnimation.start()
btDevices = bluetooth.discover_devices(lookup_names=True)
print(btDevices)
btStart.setEnabled(True)
btWait.setVisible(False)
btWaitAnimation.stop()
btWaitAnimation = QMovie("path/to/wait.gif")
btLabel = QLabel("Select Device")
btLabel.setAlignment(Qt.AlignHCenter)
btStart = QPushButton("Scan For Devices")
btStart.clicked.connect(scan)
btWait = QLabel()
btWait.setMovie(btWaitAnimation)
btWait.setAlignment(Qt.AlignHCenter)
btButtons = QDialogButtonBox(QDialogButtonBox.Cancel)
btButtons.addButton("Connect",QDialogButtonBox.AcceptRole)
btLayout = QVBoxLayout()
btLayout.addWidget(btLabel)
btLayout.addWidget(btStart)
btLayout.addWidget(btWait)
btLayout.addWidget(btButtons)
btDialog = QDialog(win)
btDialog.setwindowTitle("Smart Car - Connect Device")
btDialog.setLayout(btLayout)
btDialog.resize(200,300)
btDialog.open()
btButtons.rejected.connect(btDialog.close)
app = QApplication(sys.argv)
win = QMainWindow()
win.setwindowTitle("Smart Car")
win.setwindowIcon(QIcon("path/to/smartcardesktop.png"))
win.resize(800,600)
menuBar = win.menuBar()
fileMenu = menuBar.addMenu("Edit")
connectAction = QAction(
QIcon("path/to/connect.png"),"Connect to Device"
)
connectAction.setShortcut("Ctrl+Shift+C")
connectAction.triggered.connect(connectDevice)
win.show()
if __name__ == "__main__":
app.exec_()
预期
单击菜单操作>出现的对话框>单击“扫描设备”>在按钮下方出现旋转的圆> 8秒后,圆消失,应用程序将打印找到的设备。
实际
单击菜单操作>出现的对话框>单击“扫描设备”> 8秒钟没有任何反应> 8秒钟后,该应用程序将打印找到的设备,但没有圆圈。
如果在scan
(最后三行)中打印了蓝牙设备后删除了零件,则在打印蓝牙设备后,圆圈会出现并一直旋转。
所以就像
btDevices = bluetooth.discover_devices(lookup_names=True)
print(btDevices)
部分在执行之前
btStart.setEnabled(False)
btWait.setVisible(True)
btWaitAnimation.start()
问题
我该如何解决?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)