Если Python 3 является опцией, у вас есть два варианта:
time.perf_counter
, которые всегда используют самые точные часы на вашей платформе. Он включает время, затраченное вне процесса. time.process_time
, который возвращает время процессора. Различие между двумя может быть показано с помощью:
from time import (
process_time,
perf_counter,
sleep,
)
print(process_time())
sleep(1)
print(process_time())
print(perf_counter())
sleep(1)
print(perf_counter())
Какие выходы:
0.03125
0.03125
2.560001310720671e-07
1.0005455362793145
Попробуйте добавить каждую панель инструментов непосредственно в соответствующий виджет, используя QVBoxLayout
, как описано в Как встроить matplotlib в pyqt - для чайников .
Или, если вы все еще предпочитаете использовать область панели инструментов в QMainWindow
, вам необходимо подключить сигнал currentChanged
QTabWidget
к слоту, заменив панель инструментов на ту, которая соответствует виджету выбранного виджет.
Мне удалось решить таким образом. Я создал эту функцию
def _initialize_widget(self,widget):
"""
function that:
- initialises every tab (widget)
- add layout
- add navigation toolbar and position it at the bottom of the tab
:param widget:
:return:
"""
widget.figure.clear()
widget.draw()
widget.setLayout(QtGui.QVBoxLayout())
widget.layout().setContentsMargins(0, 710, 50, -0)#(left, top, right, bottom)
widget.layout().setSpacing(0)
toolbar = NavigationToolbar(widget, self)
widget.layout().addWidget(toolbar)
widget.figure.clear()
widget.draw()
и затем инициализирую виджеты (canvas)
self._initialize_widget(self.widget_LID1)
Таким образом, я добавляю панель инструментов навигации внизу холста.