Поскольку я пытаюсь показать процент заряда батареи в тексте кнопки. Я импортировал пакет, такой как GUI (PyQt) и пакет psutil, чтобы получить системную информацию. Когда я пытаюсь распечатать статус батареи, он может отображаться в консоли. Но когда я пытаюсь показать внутри кнопки PyQt, я получаю сообщение об ошибке.
import sys
import psutil
battery = psutil.sensors_battery()
print(battery.percent)
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PyQt5 simple window - pythonspot.com'
self.left = 10
self.top = 10
self.width = 640
self.height = 480
self.initUI()
self.battery = psutil.sensors_battery()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
#------>psutil.sensors_battery()
button = QPushButton(psutil.sensors_battery(), self)
button.setToolTip('This is an example button')
button.move(100, 70)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
Ниже приведен код ошибки
Traceback (most recent call last):
File "F:/PY3/helloworld.py", line 45, in <module>
ex = App()
File "F:/PY3/helloworld.py", line 31, in __init__
self.initUI()
File "F:/PY3/helloworld.py", line 37, in initUI
button = QPushButton(psutil.sensors_battery(), self)
TypeError: arguments did not match any overloaded call:
QPushButton(parent: QWidget = None): argument 1 has unexpected type 'sbattery'
QPushButton(str, parent: QWidget = None): argument 1 has unexpected type 'sbattery'
QPushButton(QIcon, str, parent: QWidget = None): argument 1 has unexpected type 'sbattery'
Так как же в кнопке выставить процент заряда батареи?
psutil.sensors_battery()
Return battery status information as a named tuple including the following values. [...]
- percent: battery power left as a percentage.
(курсив мой)
Итак, вы можете получить доступ к своему значению с помощью:
battery_status = psutil.sensors_battery()
percents_left = battery_status.percent
Если QPushButton
нужна строка в качестве первого параметра, вы можете сделать:
button = QPushButton(str(percents_left), self)
Или все в одной строке:
button = QPushButton(str(psutil.sensors_battery().percent), self)
Сработало, поэтому нужно преобразовать в строку :)